diff --git a/src/external/libkqueue b/src/external/libkqueue index e7f550d34..a2523329a 160000 --- a/src/external/libkqueue +++ b/src/external/libkqueue @@ -1 +1 @@ -Subproject commit e7f550d34d2252a6d8bd376b1ac7bc0d0bee2eb7 +Subproject commit a2523329a0e4f0987e86316e9e47b25ae360364a diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 1c8ad1c31..f19485eff 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -34,6 +34,7 @@ set(emulation_sources unistd/pwrite.c unistd/readv.c unistd/writev.c + unistd/flock.c mman/mman.c mman/madvise.c mman/msync.c diff --git a/src/kernel/emulation/linux/syscalls.c b/src/kernel/emulation/linux/syscalls.c index d2e803044..62aed59ae 100644 --- a/src/kernel/emulation/linux/syscalls.c +++ b/src/kernel/emulation/linux/syscalls.c @@ -7,6 +7,7 @@ #include "mman/mman.h" #include "mman/madvise.h" #include "mman/msync.h" +#include "unistd/flock.h" #include "unistd/sync.h" #include "unistd/fsync.h" #include "unistd/fdatasync.h" @@ -242,6 +243,7 @@ void* __bsd_syscall_table[600] = { [123] = sys_fchown, [124] = sys_fchmod, [128] = sys_rename, + [131] = sys_flock, [132] = sys_mkfifo, [133] = sys_sendto, [134] = sys_shutdown, diff --git a/src/kernel/emulation/linux/unistd/flock.c b/src/kernel/emulation/linux/unistd/flock.c new file mode 100644 index 000000000..4990a23dd --- /dev/null +++ b/src/kernel/emulation/linux/unistd/flock.c @@ -0,0 +1,15 @@ +#include "flock.h" +#include "../base.h" +#include "../errno.h" +#include + +long sys_flock(int fd, int op) +{ + int ret; + + ret = LINUX_SYSCALL(__NR_flock, fd, op); + if (ret < 0) + ret = errno_linux_to_bsd(ret); + + return ret; +} diff --git a/src/kernel/emulation/linux/unistd/flock.h b/src/kernel/emulation/linux/unistd/flock.h new file mode 100644 index 000000000..f3f864ec0 --- /dev/null +++ b/src/kernel/emulation/linux/unistd/flock.h @@ -0,0 +1,7 @@ +#ifndef LINUX_FLOCK_H +#define LINUX_FLOCK_H + +long sys_flock(int fd, int op); + +#endif +