svn commit: r357578 - in head/sys: amd64/linux32 arm/linux i386/linux

Ed Maste emaste at FreeBSD.org
Wed Feb 5 16:54:20 UTC 2020


Author: emaste
Date: Wed Feb  5 16:54:16 2020
New Revision: 357578
URL: https://svnweb.freebsd.org/changeset/base/357578

Log:
  regen linuxulator sysent after r357577

Modified:
  head/sys/amd64/linux32/linux32_proto.h
  head/sys/amd64/linux32/linux32_syscall.h
  head/sys/amd64/linux32/linux32_syscalls.c
  head/sys/amd64/linux32/linux32_sysent.c
  head/sys/amd64/linux32/linux32_systrace_args.c
  head/sys/arm/linux/linux_proto.h
  head/sys/arm/linux/linux_syscall.h
  head/sys/arm/linux/linux_syscalls.c
  head/sys/arm/linux/linux_sysent.c
  head/sys/arm/linux/linux_systrace_args.c
  head/sys/i386/linux/linux_proto.h
  head/sys/i386/linux/linux_syscall.h
  head/sys/i386/linux/linux_syscalls.c
  head/sys/i386/linux/linux_sysent.c
  head/sys/i386/linux/linux_systrace_args.c

Modified: head/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- head/sys/amd64/linux32/linux32_proto.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/amd64/linux32/linux32_proto.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -606,7 +606,10 @@ struct linux_sigaltstack_args {
 	char uoss_l_[PADL_(l_stack_t *)]; l_stack_t * uoss; char uoss_r_[PADR_(l_stack_t *)];
 };
 struct linux_sendfile_args {
-	register_t dummy;
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_long *)]; l_long * offset; char offset_r_[PADR_(l_long *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
 };
 struct linux_vfork_args {
 	register_t dummy;
@@ -737,6 +740,12 @@ struct linux_tkill_args {
 	char tid_l_[PADL_(int)]; int tid; char tid_r_[PADR_(int)];
 	char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
 };
+struct linux_sendfile64_args {
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t *)]; l_loff_t * offset; char offset_r_[PADR_(l_loff_t *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
+};
 struct linux_sys_futex_args {
 	char uaddr_l_[PADL_(void *)]; void * uaddr; char uaddr_r_[PADR_(void *)];
 	char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
@@ -1698,6 +1707,7 @@ int	linux_removexattr(struct thread *, struct linux_re
 int	linux_lremovexattr(struct thread *, struct linux_lremovexattr_args *);
 int	linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int	linux_tkill(struct thread *, struct linux_tkill_args *);
+int	linux_sendfile64(struct thread *, struct linux_sendfile64_args *);
 int	linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
 int	linux_sched_setaffinity(struct thread *, struct linux_sched_setaffinity_args *);
 int	linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *);
@@ -2092,6 +2102,7 @@ int	linux_io_uring_register(struct thread *, struct li
 #define	LINUX32_SYS_AUE_linux_lremovexattr	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_fremovexattr	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_tkill	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_sendfile64	AUE_SENDFILE
 #define	LINUX32_SYS_AUE_linux_sys_futex	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_sched_setaffinity	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_sched_getaffinity	AUE_NULL

Modified: head/sys/amd64/linux32/linux32_syscall.h
==============================================================================
--- head/sys/amd64/linux32/linux32_syscall.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/amd64/linux32/linux32_syscall.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -216,6 +216,7 @@
 #define	LINUX32_SYS_linux_lremovexattr	236
 #define	LINUX32_SYS_linux_fremovexattr	237
 #define	LINUX32_SYS_linux_tkill	238
+#define	LINUX32_SYS_linux_sendfile64	239
 #define	LINUX32_SYS_linux_sys_futex	240
 #define	LINUX32_SYS_linux_sched_setaffinity	241
 #define	LINUX32_SYS_linux_sched_getaffinity	242

Modified: head/sys/amd64/linux32/linux32_syscalls.c
==============================================================================
--- head/sys/amd64/linux32/linux32_syscalls.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/amd64/linux32/linux32_syscalls.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -246,7 +246,7 @@ const char *linux32_syscallnames[] = {
 	"linux_lremovexattr",			/* 236 = linux_lremovexattr */
 	"linux_fremovexattr",			/* 237 = linux_fremovexattr */
 	"linux_tkill",			/* 238 = linux_tkill */
-	"#239",			/* 239 = linux_sendfile64 */
+	"linux_sendfile64",			/* 239 = linux_sendfile64 */
 	"linux_sys_futex",			/* 240 = linux_sys_futex */
 	"linux_sched_setaffinity",			/* 241 = linux_sched_setaffinity */
 	"linux_sched_getaffinity",			/* 242 = linux_sched_getaffinity */

Modified: head/sys/amd64/linux32/linux32_sysent.c
==============================================================================
--- head/sys/amd64/linux32/linux32_sysent.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/amd64/linux32/linux32_sysent.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -204,7 +204,7 @@ struct sysent linux32_sysent[] = {
 	{ AS(linux_capget_args), (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 184 = linux_capget */
 	{ AS(linux_capset_args), (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 185 = linux_capset */
 	{ AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 186 = linux_sigaltstack */
-	{ 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
+	{ AS(linux_sendfile_args), (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 188 = getpmsg */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 189 = putpmsg */
 	{ 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0, 0, SY_THR_STATIC },	/* 190 = linux_vfork */
@@ -256,7 +256,7 @@ struct sysent linux32_sysent[] = {
 	{ 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 236 = linux_lremovexattr */
 	{ 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 237 = linux_fremovexattr */
 	{ AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 238 = linux_tkill */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 239 = linux_sendfile64 */
+	{ AS(linux_sendfile64_args), (sy_call_t *)linux_sendfile64, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 239 = linux_sendfile64 */
 	{ AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 240 = linux_sys_futex */
 	{ AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 241 = linux_sched_setaffinity */
 	{ AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 242 = linux_sched_getaffinity */

Modified: head/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- head/sys/amd64/linux32/linux32_systrace_args.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/amd64/linux32/linux32_systrace_args.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -1294,7 +1294,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sendfile */
 	case 187: {
-		*n_args = 0;
+		struct linux_sendfile_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_long * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
 		break;
 	}
 	/* linux_vfork */
@@ -1620,6 +1625,16 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 		*n_args = 2;
 		break;
 	}
+	/* linux_sendfile64 */
+	case 239: {
+		struct linux_sendfile64_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_loff_t * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
+		break;
+	}
 	/* linux_sys_futex */
 	case 240: {
 		struct linux_sys_futex_args *p = params;
@@ -4987,6 +5002,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sendfile */
 	case 187:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_long *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_vfork */
 	case 190:
@@ -5432,6 +5463,25 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 			break;
 		};
 		break;
+	/* linux_sendfile64 */
+	case 239:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_loff_t *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
+		break;
 	/* linux_sys_futex */
 	case 240:
 		switch(ndx) {
@@ -8305,6 +8355,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 		break;
 	/* linux_sendfile */
 	case 187:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_vfork */
 	case 190:
 	/* linux_getrlimit */
@@ -8475,6 +8528,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 237:
 	/* linux_tkill */
 	case 238:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* linux_sendfile64 */
+	case 239:
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;

Modified: head/sys/arm/linux/linux_proto.h
==============================================================================
--- head/sys/arm/linux/linux_proto.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/arm/linux/linux_proto.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -509,7 +509,10 @@ struct linux_sigaltstack_args {
 	char uoss_l_[PADL_(l_stack_t *)]; l_stack_t * uoss; char uoss_r_[PADR_(l_stack_t *)];
 };
 struct linux_sendfile_args {
-	register_t dummy;
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_long *)]; l_long * offset; char offset_r_[PADR_(l_long *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
 };
 struct linux_vfork_args {
 	register_t dummy;
@@ -638,6 +641,12 @@ struct linux_tkill_args {
 	char tid_l_[PADL_(int)]; int tid; char tid_r_[PADR_(int)];
 	char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
 };
+struct linux_sendfile64_args {
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t *)]; l_loff_t * offset; char offset_r_[PADR_(l_loff_t *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
+};
 struct linux_sys_futex_args {
 	char uaddr_l_[PADL_(void *)]; void * uaddr; char uaddr_r_[PADR_(void *)];
 	char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
@@ -1371,6 +1380,7 @@ int	linux_removexattr(struct thread *, struct linux_re
 int	linux_lremovexattr(struct thread *, struct linux_lremovexattr_args *);
 int	linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int	linux_tkill(struct thread *, struct linux_tkill_args *);
+int	linux_sendfile64(struct thread *, struct linux_sendfile64_args *);
 int	linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
 int	linux_sched_setaffinity(struct thread *, struct linux_sched_setaffinity_args *);
 int	linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *);
@@ -1696,6 +1706,7 @@ int	linux_set_tls(struct thread *, struct linux_set_tl
 #define	LINUX_SYS_AUE_linux_lremovexattr	AUE_NULL
 #define	LINUX_SYS_AUE_linux_fremovexattr	AUE_NULL
 #define	LINUX_SYS_AUE_linux_tkill	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sendfile64	AUE_SENDFILE
 #define	LINUX_SYS_AUE_linux_sys_futex	AUE_NULL
 #define	LINUX_SYS_AUE_linux_sched_setaffinity	AUE_NULL
 #define	LINUX_SYS_AUE_linux_sched_getaffinity	AUE_NULL

Modified: head/sys/arm/linux/linux_syscall.h
==============================================================================
--- head/sys/arm/linux/linux_syscall.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/arm/linux/linux_syscall.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -195,6 +195,7 @@
 #define	LINUX_SYS_linux_lremovexattr	236
 #define	LINUX_SYS_linux_fremovexattr	237
 #define	LINUX_SYS_linux_tkill	238
+#define	LINUX_SYS_linux_sendfile64	239
 #define	LINUX_SYS_linux_sys_futex	240
 #define	LINUX_SYS_linux_sched_setaffinity	241
 #define	LINUX_SYS_linux_sched_getaffinity	242

Modified: head/sys/arm/linux/linux_syscalls.c
==============================================================================
--- head/sys/arm/linux/linux_syscalls.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/arm/linux/linux_syscalls.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -246,7 +246,7 @@ const char *linux_syscallnames[] = {
 	"linux_lremovexattr",			/* 236 = linux_lremovexattr */
 	"linux_fremovexattr",			/* 237 = linux_fremovexattr */
 	"linux_tkill",			/* 238 = linux_tkill */
-	"#239",			/* 239 = linux_sendfile64 */
+	"linux_sendfile64",			/* 239 = linux_sendfile64 */
 	"linux_sys_futex",			/* 240 = linux_sys_futex */
 	"linux_sched_setaffinity",			/* 241 = linux_sched_setaffinity */
 	"linux_sched_getaffinity",			/* 242 = linux_sched_getaffinity */

Modified: head/sys/arm/linux/linux_sysent.c
==============================================================================
--- head/sys/arm/linux/linux_sysent.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/arm/linux/linux_sysent.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -204,7 +204,7 @@ struct sysent linux_sysent[] = {
 	{ AS(linux_capget_args), (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 184 = linux_capget */
 	{ AS(linux_capset_args), (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 185 = linux_capset */
 	{ AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 186 = linux_sigaltstack */
-	{ 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
+	{ AS(linux_sendfile_args), (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 188 = ; */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 189 = ; */
 	{ 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0, 0, SY_THR_STATIC },	/* 190 = linux_vfork */
@@ -256,7 +256,7 @@ struct sysent linux_sysent[] = {
 	{ 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 236 = linux_lremovexattr */
 	{ 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 237 = linux_fremovexattr */
 	{ AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 238 = linux_tkill */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 239 = linux_sendfile64 */
+	{ AS(linux_sendfile64_args), (sy_call_t *)linux_sendfile64, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 239 = linux_sendfile64 */
 	{ AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 240 = linux_sys_futex */
 	{ AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 241 = linux_sched_setaffinity */
 	{ AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 242 = linux_sched_getaffinity */

Modified: head/sys/arm/linux/linux_systrace_args.c
==============================================================================
--- head/sys/arm/linux/linux_systrace_args.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/arm/linux/linux_systrace_args.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -1135,7 +1135,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sendfile */
 	case 187: {
-		*n_args = 0;
+		struct linux_sendfile_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_long * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
 		break;
 	}
 	/* linux_vfork */
@@ -1459,6 +1464,16 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 		*n_args = 2;
 		break;
 	}
+	/* linux_sendfile64 */
+	case 239: {
+		struct linux_sendfile64_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_loff_t * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
+		break;
+	}
 	/* linux_sys_futex */
 	case 240: {
 		struct linux_sys_futex_args *p = params;
@@ -4248,6 +4263,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sendfile */
 	case 187:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_long *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_vfork */
 	case 190:
@@ -4687,6 +4718,25 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 			break;
 		};
 		break;
+	/* linux_sendfile64 */
+	case 239:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_loff_t *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
+		break;
 	/* linux_sys_futex */
 	case 240:
 		switch(ndx) {
@@ -6978,6 +7028,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 		break;
 	/* linux_sendfile */
 	case 187:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_vfork */
 	case 190:
 	/* linux_getrlimit */
@@ -7148,6 +7201,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 237:
 	/* linux_tkill */
 	case 238:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* linux_sendfile64 */
+	case 239:
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;

Modified: head/sys/i386/linux/linux_proto.h
==============================================================================
--- head/sys/i386/linux/linux_proto.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/i386/linux/linux_proto.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -605,7 +605,10 @@ struct linux_sigaltstack_args {
 	char uoss_l_[PADL_(l_stack_t *)]; l_stack_t * uoss; char uoss_r_[PADR_(l_stack_t *)];
 };
 struct linux_sendfile_args {
-	register_t dummy;
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_long *)]; l_long * offset; char offset_r_[PADR_(l_long *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
 };
 struct linux_vfork_args {
 	register_t dummy;
@@ -734,6 +737,12 @@ struct linux_tkill_args {
 	char tid_l_[PADL_(int)]; int tid; char tid_r_[PADR_(int)];
 	char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
 };
+struct linux_sendfile64_args {
+	char out_l_[PADL_(l_int)]; l_int out; char out_r_[PADR_(l_int)];
+	char in_l_[PADL_(l_int)]; l_int in; char in_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t *)]; l_loff_t * offset; char offset_r_[PADR_(l_loff_t *)];
+	char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)];
+};
 struct linux_sys_futex_args {
 	char uaddr_l_[PADL_(void *)]; void * uaddr; char uaddr_r_[PADR_(void *)];
 	char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
@@ -1706,6 +1715,7 @@ int	linux_removexattr(struct thread *, struct linux_re
 int	linux_lremovexattr(struct thread *, struct linux_lremovexattr_args *);
 int	linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *);
 int	linux_tkill(struct thread *, struct linux_tkill_args *);
+int	linux_sendfile64(struct thread *, struct linux_sendfile64_args *);
 int	linux_sys_futex(struct thread *, struct linux_sys_futex_args *);
 int	linux_sched_setaffinity(struct thread *, struct linux_sched_setaffinity_args *);
 int	linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *);
@@ -2102,6 +2112,7 @@ int	linux_io_uring_register(struct thread *, struct li
 #define	LINUX_SYS_AUE_linux_lremovexattr	AUE_NULL
 #define	LINUX_SYS_AUE_linux_fremovexattr	AUE_NULL
 #define	LINUX_SYS_AUE_linux_tkill	AUE_NULL
+#define	LINUX_SYS_AUE_linux_sendfile64	AUE_SENDFILE
 #define	LINUX_SYS_AUE_linux_sys_futex	AUE_NULL
 #define	LINUX_SYS_AUE_linux_sched_setaffinity	AUE_NULL
 #define	LINUX_SYS_AUE_linux_sched_getaffinity	AUE_NULL

Modified: head/sys/i386/linux/linux_syscall.h
==============================================================================
--- head/sys/i386/linux/linux_syscall.h	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/i386/linux/linux_syscall.h	Wed Feb  5 16:54:16 2020	(r357578)
@@ -222,6 +222,7 @@
 #define	LINUX_SYS_linux_lremovexattr	236
 #define	LINUX_SYS_linux_fremovexattr	237
 #define	LINUX_SYS_linux_tkill	238
+#define	LINUX_SYS_linux_sendfile64	239
 #define	LINUX_SYS_linux_sys_futex	240
 #define	LINUX_SYS_linux_sched_setaffinity	241
 #define	LINUX_SYS_linux_sched_getaffinity	242

Modified: head/sys/i386/linux/linux_syscalls.c
==============================================================================
--- head/sys/i386/linux/linux_syscalls.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/i386/linux/linux_syscalls.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -246,7 +246,7 @@ const char *linux_syscallnames[] = {
 	"linux_lremovexattr",			/* 236 = linux_lremovexattr */
 	"linux_fremovexattr",			/* 237 = linux_fremovexattr */
 	"linux_tkill",			/* 238 = linux_tkill */
-	"#239",			/* 239 = linux_sendfile64 */
+	"linux_sendfile64",			/* 239 = linux_sendfile64 */
 	"linux_sys_futex",			/* 240 = linux_sys_futex */
 	"linux_sched_setaffinity",			/* 241 = linux_sched_setaffinity */
 	"linux_sched_getaffinity",			/* 242 = linux_sched_getaffinity */

Modified: head/sys/i386/linux/linux_sysent.c
==============================================================================
--- head/sys/i386/linux/linux_sysent.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/i386/linux/linux_sysent.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -204,7 +204,7 @@ struct sysent linux_sysent[] = {
 	{ AS(linux_capget_args), (sy_call_t *)linux_capget, AUE_CAPGET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 184 = linux_capget */
 	{ AS(linux_capset_args), (sy_call_t *)linux_capset, AUE_CAPSET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 185 = linux_capset */
 	{ AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 186 = linux_sigaltstack */
-	{ 0, (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
+	{ AS(linux_sendfile_args), (sy_call_t *)linux_sendfile, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 187 = linux_sendfile */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 188 = getpmsg */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 189 = putpmsg */
 	{ 0, (sy_call_t *)linux_vfork, AUE_VFORK, NULL, 0, 0, 0, SY_THR_STATIC },	/* 190 = linux_vfork */
@@ -256,7 +256,7 @@ struct sysent linux_sysent[] = {
 	{ 0, (sy_call_t *)linux_lremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 236 = linux_lremovexattr */
 	{ 0, (sy_call_t *)linux_fremovexattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 237 = linux_fremovexattr */
 	{ AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 238 = linux_tkill */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 239 = linux_sendfile64 */
+	{ AS(linux_sendfile64_args), (sy_call_t *)linux_sendfile64, AUE_SENDFILE, NULL, 0, 0, 0, SY_THR_STATIC },	/* 239 = linux_sendfile64 */
 	{ AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 240 = linux_sys_futex */
 	{ AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 241 = linux_sched_setaffinity */
 	{ AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 242 = linux_sched_getaffinity */

Modified: head/sys/i386/linux/linux_systrace_args.c
==============================================================================
--- head/sys/i386/linux/linux_systrace_args.c	Wed Feb  5 16:53:02 2020	(r357577)
+++ head/sys/i386/linux/linux_systrace_args.c	Wed Feb  5 16:54:16 2020	(r357578)
@@ -1335,7 +1335,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sendfile */
 	case 187: {
-		*n_args = 0;
+		struct linux_sendfile_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_long * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
 		break;
 	}
 	/* linux_vfork */
@@ -1659,6 +1664,16 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 		*n_args = 2;
 		break;
 	}
+	/* linux_sendfile64 */
+	case 239: {
+		struct linux_sendfile64_args *p = params;
+		iarg[0] = p->out; /* l_int */
+		iarg[1] = p->in; /* l_int */
+		uarg[2] = (intptr_t) p->offset; /* l_loff_t * */
+		iarg[3] = p->count; /* l_size_t */
+		*n_args = 4;
+		break;
+	}
 	/* linux_sys_futex */
 	case 240: {
 		struct linux_sys_futex_args *p = params;
@@ -5107,6 +5122,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sendfile */
 	case 187:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_long *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_vfork */
 	case 190:
@@ -5546,6 +5577,25 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 			break;
 		};
 		break;
+	/* linux_sendfile64 */
+	case 239:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "userland l_loff_t *";
+			break;
+		case 3:
+			p = "l_size_t";
+			break;
+		default:
+			break;
+		};
+		break;
 	/* linux_sys_futex */
 	case 240:
 		switch(ndx) {
@@ -8516,6 +8566,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 		break;
 	/* linux_sendfile */
 	case 187:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_vfork */
 	case 190:
 	/* linux_getrlimit */
@@ -8686,6 +8739,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 237:
 	/* linux_tkill */
 	case 238:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* linux_sendfile64 */
+	case 239:
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;


More information about the svn-src-head mailing list