more vm stubs
This commit is contained in:
parent
e8b3ac74a6
commit
76ba69151d
@ -2,6 +2,11 @@
|
||||
#include <lib.h>
|
||||
#define mmap _mmap
|
||||
#define munmap _munmap
|
||||
#define munmap_text _munmap_text
|
||||
#define vm_remap _vm_remap
|
||||
#define vm_unmap _vm_unmap
|
||||
#define vm_getphys _vm_getphys
|
||||
#define vm_getrefcount _vm_getrefcount
|
||||
#include <sys/mman.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
@ -36,5 +41,74 @@ PUBLIC int munmap(void *addr, size_t len)
|
||||
m.VMUM_ADDR = addr;
|
||||
m.VMUM_LEN = len;
|
||||
|
||||
return _syscall(VM_PROC_NR, VM_UNMAP, &m);
|
||||
return _syscall(VM_PROC_NR, VM_MUNMAP, &m);
|
||||
}
|
||||
|
||||
|
||||
PUBLIC int munmap_text(void *addr, size_t len)
|
||||
{
|
||||
message m;
|
||||
|
||||
m.VMUM_ADDR = addr;
|
||||
m.VMUM_LEN = len;
|
||||
|
||||
return _syscall(VM_PROC_NR, VM_MUNMAP_TEXT, &m);
|
||||
}
|
||||
|
||||
PUBLIC void *vm_remap(int d, int s, void *da, void *sa, size_t size)
|
||||
{
|
||||
message m;
|
||||
int r;
|
||||
|
||||
m.VMRE_D = d;
|
||||
m.VMRE_S = s;
|
||||
m.VMRE_DA = (char *) da;
|
||||
m.VMRE_SA = (char *) sa;
|
||||
m.VMRE_SIZE = size;
|
||||
|
||||
r = _syscall(VM_PROC_NR, VM_REMAP, &m);
|
||||
if (r != OK)
|
||||
return MAP_FAILED;
|
||||
return (void *) m.VMRE_RETA;
|
||||
}
|
||||
|
||||
PUBLIC int vm_unmap(int endpt, void *addr)
|
||||
{
|
||||
message m;
|
||||
|
||||
m.VMUN_ENDPT = endpt;
|
||||
m.VMUN_ADDR = (long) addr;
|
||||
|
||||
return _syscall(VM_PROC_NR, VM_SHM_UNMAP, &m);
|
||||
}
|
||||
|
||||
PUBLIC unsigned long vm_getphys(int endpt, void *addr)
|
||||
{
|
||||
message m;
|
||||
unsigned long ret;
|
||||
int r;
|
||||
|
||||
m.VMPHYS_ENDPT = endpt;
|
||||
m.VMPHYS_ADDR = (long) addr;
|
||||
|
||||
r = _syscall(VM_PROC_NR, VM_GETPHYS, &m);
|
||||
if (r != OK)
|
||||
return 0;
|
||||
return m.VMPHYS_RETA;
|
||||
}
|
||||
|
||||
PUBLIC u8_t vm_getrefcount(int endpt, void *addr)
|
||||
{
|
||||
message m;
|
||||
u8_t ret;
|
||||
int r;
|
||||
|
||||
m.VMREFCNT_ENDPT = endpt;
|
||||
m.VMREFCNT_ADDR = (long) addr;
|
||||
|
||||
r = _syscall(VM_PROC_NR, VM_GETREF, &m);
|
||||
if (r != OK)
|
||||
return (u8_t) -1;
|
||||
return (u8_t) m.VMREFCNT_RETC;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user