Module Name: src
Committed By: ozaki-r
Date: Fri Aug 16 04:23:31 UTC 2024
Modified Files:
src/lib/librumphijack: hijack.c
Log Message:
librumphijack: support flock
The original author is k-goda@IIJ.
To generate a diff of this commit:
cvs rdiff -u -r1.139 -r1.140 src/lib/librumphijack/hijack.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/librumphijack/hijack.c
diff -u src/lib/librumphijack/hijack.c:1.139 src/lib/librumphijack/hijack.c:1.140
--- src/lib/librumphijack/hijack.c:1.139 Tue Aug 1 07:04:15 2023
+++ src/lib/librumphijack/hijack.c Fri Aug 16 04:23:31 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: hijack.c,v 1.139 2023/08/01 07:04:15 mrg Exp $ */
+/* $NetBSD: hijack.c,v 1.140 2024/08/16 04:23:31 ozaki-r Exp $ */
/*-
* Copyright (c) 2011 Antti Kantee. All Rights Reserved.
@@ -34,7 +34,7 @@
#include <rump/rumpuser_port.h>
#if !defined(lint)
-__RCSID("$NetBSD: hijack.c,v 1.139 2023/08/01 07:04:15 mrg Exp $");
+__RCSID("$NetBSD: hijack.c,v 1.140 2024/08/16 04:23:31 ozaki-r Exp $");
#endif
#include <sys/param.h>
@@ -88,7 +88,7 @@ __RCSID("$NetBSD: hijack.c,v 1.139 2023/
*/
enum dualcall {
DUALCALL_WRITE, DUALCALL_WRITEV, DUALCALL_PWRITE, DUALCALL_PWRITEV,
- DUALCALL_IOCTL, DUALCALL_FCNTL,
+ DUALCALL_IOCTL, DUALCALL_FCNTL, DUALCALL_FLOCK,
DUALCALL_SOCKET, DUALCALL_ACCEPT,
#ifndef __linux__
DUALCALL_PACCEPT,
@@ -327,6 +327,7 @@ struct sysnames {
{ DUALCALL_PWRITEV, "pwritev", RSYS_NAME(PWRITEV) },
{ DUALCALL_IOCTL, "ioctl", RSYS_NAME(IOCTL) },
{ DUALCALL_FCNTL, "fcntl", RSYS_NAME(FCNTL) },
+ { DUALCALL_FLOCK, "flock", RSYS_NAME(FLOCK) },
{ DUALCALL_DUP2, "dup2", RSYS_NAME(DUP2) },
{ DUALCALL_CLOSE, "close", RSYS_NAME(CLOSE) },
{ DUALCALL_POLLTS, S(REALPOLLTS), RSYS_NAME(POLLTS) },
@@ -1632,6 +1633,23 @@ fcntl(int fd, int cmd, ...)
}
int
+flock(int fd, int operation)
+{
+ int (*op_flock)(int, int);
+
+ DPRINTF(("flock -> %d (operation %d)\n", fd, operation));
+
+ if (fd_isrump(fd)) {
+ fd = fd_host2rump(fd);
+ op_flock = GETSYSCALL(rump, FLOCK);
+ } else {
+ op_flock = GETSYSCALL(host, FLOCK);
+ }
+
+ return op_flock(fd, operation);
+}
+
+int
close(int fd)
{
int (*op_close)(int);