]> Zhao Yanbai Git Server - minix.git/commitdiff
custom message type for VM_SHM_UNMAP
authorBen Gras <ben@minix3.org>
Sat, 26 Jul 2014 11:53:44 +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 45dc520d8a50722c82aecf6183183d932c891d43..f3affaeeddea64847b75a2c1df3c7d7ee8d5b281 100644 (file)
 #define VM_REMAP               (VM_RQ_BASE+33)
 
 #define VM_SHM_UNMAP           (VM_RQ_BASE+34)
-#      define VMUN_ENDPT               m_mmap.forwhom
-#      define VMUN_ADDR                m_mmap.addr
 
 #define VM_GETPHYS             (VM_RQ_BASE+35)
 #      define VMPHYS_ENDPT             m2_i1
index a2e79cdbec82e1e3f88a8cd25328a4c0a79f7603..8c84765cbead0997c9cc1ef81b4dce774b6c75f3 100644 (file)
@@ -1711,6 +1711,13 @@ typedef struct {
 } mess_lsys_vm_vmremap;
 _ASSERT_MSG_SIZE(mess_lsys_vm_vmremap);
 
+typedef struct {
+       endpoint_t      forwhom;
+       void            *addr;
+       uint8_t         padding[48];
+} mess_lc_vm_shm_unmap;
+_ASSERT_MSG_SIZE(mess_lc_vm_shm_unmap);
+
 typedef struct {
        endpoint_t m_source;            /* who sent the message */
        int m_type;                     /* what kind of message is it */
@@ -1930,6 +1937,7 @@ typedef struct {
                mess_vfs_lc_lseek       m_vfs_lc_lseek;
 
                mess_lsys_vm_vmremap    m_lsys_vm_vmremap;
+               mess_lc_vm_shm_unmap    m_lc_vm_shm_unmap;
 
                mess_vfs_lchardriver_cancel     m_vfs_lchardriver_cancel;
                mess_vfs_lchardriver_openclose  m_vfs_lchardriver_openclose;
index 3dec2a4a880908a302a7f4f70be9b6ee666e2ed7..ea073a063afe941e19c21716cdf0b203130188fe 100644 (file)
@@ -134,8 +134,8 @@ int vm_unmap(endpoint_t endpt, void *addr)
        message m;
 
        memset(&m, 0, sizeof(m));
-       m.VMUN_ENDPT = endpt;
-       m.VMUN_ADDR = addr;
+       m.m_lc_vm_shm_unmap.forwhom = endpt;
+       m.m_lc_vm_shm_unmap.addr = addr;
 
        return _syscall(VM_PROC_NR, VM_SHM_UNMAP, &m);
 }
index 0526394d26f06c7a0bc7f7788021c9a3010f36c0..a3be376ccd0b687056c69cabd8f75901898bdd6c 100644 (file)
@@ -498,7 +498,7 @@ int do_munmap(message *m)
        if(m->m_type == VM_UNMAP_PHYS) {
                target = m->VMUP_EP;
        } else if(m->m_type == VM_SHM_UNMAP) {
-               target = m->VMUN_ENDPT;
+               target = m->m_lc_vm_shm_unmap.forwhom;
        }
 
        if(target == SELF)
@@ -513,7 +513,7 @@ int do_munmap(message *m)
        if(m->m_type == VM_UNMAP_PHYS) {
                addr = (vir_bytes) m->VMUP_VADDR;
        } else if(m->m_type == VM_SHM_UNMAP) {
-               addr = (vir_bytes) m->VMUN_ADDR;
+               addr = (vir_bytes) m->m_lc_vm_shm_unmap.addr;
        } else  addr = (vir_bytes) m->VMUM_ADDR;
 
        if(addr % VM_PAGE_SIZE)