From 0e0684cd1c53d68e81d934d7ac2347a4cacc8c15 Mon Sep 17 00:00:00 2001 From: NAKAMURA Gou Date: Wed, 28 Aug 2013 17:43:00 +0900 Subject: [PATCH] support shared anonymous mapping mmap(..., MAP_SHARED|MAP_ANONYMOUS, ...) is possible now. shared mapped file is still not implemented. --- kernel/syscall.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/syscall.c b/kernel/syscall.c index 8710a827..be321bc1 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -316,6 +316,7 @@ out: SYSCALL_DECLARE(mmap) { const int supported_flags = 0 + | MAP_SHARED // 01 | MAP_PRIVATE // 02 | MAP_FIXED // 10 | MAP_ANONYMOUS // 20 @@ -329,7 +330,6 @@ SYSCALL_DECLARE(mmap) | MAP_STACK // 00020000 ; const int error_flags = 0 - | MAP_SHARED // 01 #ifndef USE_NOCACHE_MMAP | MAP_32BIT // 40 #endif /* ndef USE_NOCACHE_MMAP */ @@ -410,6 +410,14 @@ SYSCALL_DECLARE(mmap) goto out; } + if ((flags & MAP_SHARED) && !(flags & MAP_ANONYMOUS)) { + ekprintf("sys_mmap(%lx,%lx,%x,%x,%x,%lx):NYI:shared mapped file%lx\n", + addr0, len0, prot, flags, fd, off, + (flags & ~(supported_flags | ignored_flags))); + error = -EINVAL; + goto out; + } + ihk_mc_spinlock_lock_noirq(&proc->vm->memory_range_lock); if (flags & MAP_FIXED) {