implement mmap(MAP_LOCKED)

This commit is contained in:
NAKAMURA Gou
2014-01-27 10:20:12 +09:00
parent f0a52d4519
commit 93c5385f65
2 changed files with 4 additions and 2 deletions

View File

@ -28,6 +28,7 @@
#define VR_REMOTE 0x200 #define VR_REMOTE 0x200
#define VR_DEMAND_PAGING 0x1000 #define VR_DEMAND_PAGING 0x1000
#define VR_PRIVATE 0x2000 #define VR_PRIVATE 0x2000
#define VR_LOCKED 0x4000
#define VR_PROT_NONE 0x00000000 #define VR_PROT_NONE 0x00000000
#define VR_PROT_READ 0x00010000 #define VR_PROT_READ 0x00010000
#define VR_PROT_WRITE 0x00020000 #define VR_PROT_WRITE 0x00020000

View File

@ -404,6 +404,7 @@ SYSCALL_DECLARE(mmap)
| MAP_PRIVATE // 02 | MAP_PRIVATE // 02
| MAP_FIXED // 10 | MAP_FIXED // 10
| MAP_ANONYMOUS // 20 | MAP_ANONYMOUS // 20
| MAP_LOCKED // 2000
| MAP_POPULATE // 8000 | MAP_POPULATE // 8000
; ;
const int ignored_flags = 0 const int ignored_flags = 0
@ -420,7 +421,6 @@ SYSCALL_DECLARE(mmap)
#endif /* ndef USE_NOCACHE_MMAP */ #endif /* ndef USE_NOCACHE_MMAP */
| MAP_GROWSDOWN // 0100 | MAP_GROWSDOWN // 0100
| MAP_EXECUTABLE // 1000 | MAP_EXECUTABLE // 1000
| MAP_LOCKED // 2000
| MAP_NONBLOCK // 00010000 | MAP_NONBLOCK // 00010000
| MAP_HUGETLB // 00040000 | MAP_HUGETLB // 00040000
; ;
@ -524,6 +524,7 @@ SYSCALL_DECLARE(mmap)
vrflags = VR_NONE; vrflags = VR_NONE;
vrflags |= PROT_TO_VR_FLAG(prot); vrflags |= PROT_TO_VR_FLAG(prot);
vrflags |= (flags & MAP_PRIVATE)? VR_PRIVATE: 0; vrflags |= (flags & MAP_PRIVATE)? VR_PRIVATE: 0;
vrflags |= (flags & MAP_LOCKED)? VR_LOCKED: 0;
if (flags & MAP_ANONYMOUS) { if (flags & MAP_ANONYMOUS) {
if (0) { if (0) {
/* dummy */ /* dummy */
@ -612,7 +613,7 @@ out:
} }
ihk_mc_spinlock_unlock_noirq(&proc->vm->memory_range_lock); ihk_mc_spinlock_unlock_noirq(&proc->vm->memory_range_lock);
if (!error && (flags & MAP_POPULATE)) { if (!error && (flags & (MAP_POPULATE | MAP_LOCKED))) {
error = populate_process_memory(proc, (void *)addr, len); error = populate_process_memory(proc, (void *)addr, len);
if (error) { if (error) {
ekprintf("sys_mmap:populate_process_memory" ekprintf("sys_mmap:populate_process_memory"