custom message type for VM_GETREF
This commit is contained in:
parent
28b5360df7
commit
01a50f57d8
4 changed files with 15 additions and 9 deletions
|
@ -760,9 +760,6 @@
|
|||
#define VM_GETPHYS (VM_RQ_BASE+35)
|
||||
|
||||
#define VM_GETREF (VM_RQ_BASE+36)
|
||||
# define VMREFCNT_ENDPT m2_i1
|
||||
# define VMREFCNT_ADDR m2_l1
|
||||
# define VMREFCNT_RETC m2_i2
|
||||
|
||||
#define VM_RS_SET_PRIV (VM_RQ_BASE+37)
|
||||
# define VM_RS_NR m2_i1
|
||||
|
|
|
@ -1726,6 +1726,14 @@ typedef struct {
|
|||
} mess_lc_vm_getphys;
|
||||
_ASSERT_MSG_SIZE(mess_lc_vm_getphys);
|
||||
|
||||
typedef struct {
|
||||
endpoint_t endpt;
|
||||
void *addr;
|
||||
int retc;
|
||||
uint8_t padding[44];
|
||||
} mess_lsys_vm_getref;
|
||||
_ASSERT_MSG_SIZE(mess_lsys_vm_getref);
|
||||
|
||||
typedef struct {
|
||||
endpoint_t m_source; /* who sent the message */
|
||||
int m_type; /* what kind of message is it */
|
||||
|
@ -1945,6 +1953,7 @@ typedef struct {
|
|||
mess_vfs_lc_lseek m_vfs_lc_lseek;
|
||||
|
||||
mess_lsys_vm_vmremap m_lsys_vm_vmremap;
|
||||
mess_lsys_vm_getref m_lsys_vm_getref;
|
||||
mess_lc_vm_getphys m_lc_vm_getphys;
|
||||
mess_lc_vm_shm_unmap m_lc_vm_shm_unmap;
|
||||
|
||||
|
|
|
@ -161,12 +161,12 @@ u8_t vm_getrefcount(endpoint_t endpt, void *addr)
|
|||
int r;
|
||||
|
||||
memset(&m, 0, sizeof(m));
|
||||
m.VMREFCNT_ENDPT = endpt;
|
||||
m.VMREFCNT_ADDR = (long) addr;
|
||||
m.m_lsys_vm_getref.endpt = endpt;
|
||||
m.m_lsys_vm_getref.addr = addr;
|
||||
|
||||
r = _syscall(VM_PROC_NR, VM_GETREF, &m);
|
||||
if (r != OK)
|
||||
return (u8_t) -1;
|
||||
return (u8_t) m.VMREFCNT_RETC;
|
||||
return (u8_t) m.m_lsys_vm_getref.retc;
|
||||
}
|
||||
|
||||
|
|
|
@ -471,8 +471,8 @@ int do_get_refcount(message *m)
|
|||
u8_t cnt;
|
||||
vir_bytes addr;
|
||||
|
||||
target = m->VMREFCNT_ENDPT;
|
||||
addr = m->VMREFCNT_ADDR;
|
||||
target = m->m_lsys_vm_getref.endpt;
|
||||
addr = (vir_bytes) m->m_lsys_vm_getref.addr;
|
||||
|
||||
if ((r = vm_isokendpt(target, &n)) != OK)
|
||||
return EINVAL;
|
||||
|
@ -481,7 +481,7 @@ int do_get_refcount(message *m)
|
|||
|
||||
r = map_get_ref(vmp, addr, &cnt);
|
||||
|
||||
m->VMREFCNT_RETC = cnt;
|
||||
m->m_lsys_vm_getref.retc = cnt;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue