]> Zhao Yanbai Git Server - minix.git/commitdiff
custom message type for VM_GETPHYS
authorBen Gras <ben@minix3.org>
Sat, 26 Jul 2014 11:53:45 +0000 (13:53 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:06:17 +0000 (17:06 +0200)
include/minix/com.h
include/minix/ipc.h
lib/libc/sys-minix/mmap.c
servers/vm/mmap.c

index f3affaeeddea64847b75a2c1df3c7d7ee8d5b281..e091a4d33be327f05e565fc0030bcbf5f631d95c 100644 (file)
 #define VM_SHM_UNMAP           (VM_RQ_BASE+34)
 
 #define VM_GETPHYS             (VM_RQ_BASE+35)
-#      define VMPHYS_ENDPT             m2_i1
-#      define VMPHYS_ADDR              m2_l1
-#      define VMPHYS_RETA              m2_l2
 
 #define VM_GETREF              (VM_RQ_BASE+36)
 #      define VMREFCNT_ENDPT           m2_i1
index 8c84765cbead0997c9cc1ef81b4dce774b6c75f3..7401eb53ce3f3888e99c5f111ec70e7ca5f49e5c 100644 (file)
@@ -1718,6 +1718,14 @@ typedef struct {
 } mess_lc_vm_shm_unmap;
 _ASSERT_MSG_SIZE(mess_lc_vm_shm_unmap);
 
+typedef struct {
+       endpoint_t      endpt;
+       void            *addr;
+       void            *ret_addr;
+       uint8_t         padding[44];
+} mess_lc_vm_getphys;
+_ASSERT_MSG_SIZE(mess_lc_vm_getphys);
+
 typedef struct {
        endpoint_t m_source;            /* who sent the message */
        int m_type;                     /* what kind of message is it */
@@ -1937,6 +1945,7 @@ typedef struct {
                mess_vfs_lc_lseek       m_vfs_lc_lseek;
 
                mess_lsys_vm_vmremap    m_lsys_vm_vmremap;
+               mess_lc_vm_getphys      m_lc_vm_getphys;
                mess_lc_vm_shm_unmap    m_lc_vm_shm_unmap;
 
                mess_vfs_lchardriver_cancel     m_vfs_lchardriver_cancel;
index ea073a063afe941e19c21716cdf0b203130188fe..334cc7782f0d13014d10238355ebecb2a06c902a 100644 (file)
@@ -146,13 +146,13 @@ unsigned long vm_getphys(endpoint_t endpt, void *addr)
        int r;
 
        memset(&m, 0, sizeof(m));
-       m.VMPHYS_ENDPT = endpt;
-       m.VMPHYS_ADDR = (long) addr;
+       m.m_lc_vm_getphys.endpt = endpt;
+       m.m_lc_vm_getphys.addr = addr;
 
        r = _syscall(VM_PROC_NR, VM_GETPHYS, &m);
        if (r != OK)
                return 0;
-       return m.VMPHYS_RETA;
+       return (unsigned long) m.m_lc_vm_getphys.ret_addr;
 }
 
 u8_t vm_getrefcount(endpoint_t endpt, void *addr)
index a3be376ccd0b687056c69cabd8f75901898bdd6c..d838df47f3aa904e071c2fd6cf3af214480029b8 100644 (file)
@@ -446,8 +446,8 @@ int do_get_phys(message *m)
        phys_bytes ret;
        vir_bytes addr;
 
-       target = m->VMPHYS_ENDPT;
-       addr = m->VMPHYS_ADDR;
+       target = m->m_lc_vm_getphys.endpt;
+       addr = (vir_bytes) m->m_lc_vm_getphys.addr;
 
        if ((r = vm_isokendpt(target, &n)) != OK)
                return EINVAL;
@@ -456,7 +456,7 @@ int do_get_phys(message *m)
 
        r = map_get_phys(vmp, addr, &ret);
 
-       m->VMPHYS_RETA = ret;
+       m->m_lc_vm_getphys.ret_addr = (void *) ret;
        return r;
 }