svn commit: r359602 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux i386/linux

Mark Johnston markj at FreeBSD.org
Fri Apr 3 16:11:55 UTC 2020


Author: markj
Date: Fri Apr  3 16:11:39 2020
New Revision: 359602
URL: https://svnweb.freebsd.org/changeset/base/359602

Log:
  MFC r355752, r355753 (by trasz):
  Fix definitions for linuxulator's sync_file_range(2).

Modified:
  stable/12/sys/amd64/linux/linux_proto.h
  stable/12/sys/amd64/linux/linux_sysent.c
  stable/12/sys/amd64/linux/linux_systrace_args.c
  stable/12/sys/amd64/linux/syscalls.master
  stable/12/sys/amd64/linux32/linux32_proto.h
  stable/12/sys/amd64/linux32/linux32_sysent.c
  stable/12/sys/amd64/linux32/linux32_systrace_args.c
  stable/12/sys/amd64/linux32/syscalls.master
  stable/12/sys/arm64/linux/linux_proto.h
  stable/12/sys/arm64/linux/linux_sysent.c
  stable/12/sys/arm64/linux/linux_systrace_args.c
  stable/12/sys/arm64/linux/syscalls.master
  stable/12/sys/i386/linux/linux_proto.h
  stable/12/sys/i386/linux/linux_sysent.c
  stable/12/sys/i386/linux/linux_systrace_args.c
  stable/12/sys/i386/linux/syscalls.master
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/linux/linux_proto.h
==============================================================================
--- stable/12/sys/amd64/linux/linux_proto.h	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux/linux_proto.h	Fri Apr  3 16:11:39 2020	(r359602)
@@ -940,7 +940,10 @@ struct linux_tee_args {
 	register_t dummy;
 };
 struct linux_sync_file_range_args {
-	register_t dummy;
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)];
+	char nbytes_l_[PADL_(l_loff_t)]; l_loff_t nbytes; char nbytes_r_[PADR_(l_loff_t)];
+	char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
 };
 struct linux_vmsplice_args {
 	register_t dummy;

Modified: stable/12/sys/amd64/linux/linux_sysent.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_sysent.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux/linux_sysent.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -294,7 +294,7 @@ struct sysent linux_sysent[] = {
 	{ AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 274 = linux_get_robust_list */
 	{ 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 275 = linux_splice */
 	{ 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },		/* 276 = linux_tee */
-	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 277 = linux_sync_file_range */
+	{ AS(linux_sync_file_range_args), (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 277 = linux_sync_file_range */
 	{ 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 278 = linux_vmsplice */
 	{ 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 279 = linux_move_pages */
 	{ AS(linux_utimensat_args), (sy_call_t *)linux_utimensat, AUE_FUTIMESAT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 280 = linux_utimensat */

Modified: stable/12/sys/amd64/linux/linux_systrace_args.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_systrace_args.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux/linux_systrace_args.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -1977,7 +1977,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sync_file_range */
 	case 277: {
-		*n_args = 0;
+		struct linux_sync_file_range_args *p = params;
+		iarg[0] = p->fd; /* l_int */
+		iarg[1] = p->offset; /* l_loff_t */
+		iarg[2] = p->nbytes; /* l_loff_t */
+		uarg[3] = p->flags; /* unsigned int */
+		*n_args = 4;
 		break;
 	}
 	/* linux_vmsplice */
@@ -5553,6 +5558,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sync_file_range */
 	case 277:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_loff_t";
+			break;
+		case 2:
+			p = "l_loff_t";
+			break;
+		case 3:
+			p = "unsigned int";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_vmsplice */
 	case 278:
@@ -7509,6 +7530,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 276:
 	/* linux_sync_file_range */
 	case 277:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_vmsplice */
 	case 278:
 	/* linux_move_pages */

Modified: stable/12/sys/amd64/linux/syscalls.master
==============================================================================
--- stable/12/sys/amd64/linux/syscalls.master	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux/syscalls.master	Fri Apr  3 16:11:39 2020	(r359602)
@@ -467,7 +467,8 @@
 				    struct linux_robust_list_head **head, l_size_t *len); }
 275	AUE_NULL	STD	{ int linux_splice(void); }
 276	AUE_NULL	STD	{ int linux_tee(void); }
-277	AUE_NULL	STD	{ int linux_sync_file_range(void); }
+277	AUE_NULL	STD	{ int linux_sync_file_range(l_int fd, l_loff_t offset,
+				    l_loff_t nbytes, unsigned int flags); }
 278	AUE_NULL	STD	{ int linux_vmsplice(void); }
 279	AUE_NULL	STD	{ int linux_move_pages(void); }
 280	AUE_FUTIMESAT	STD	{ int linux_utimensat(l_int dfd, const char *pathname, \

Modified: stable/12/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_proto.h	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux32/linux32_proto.h	Fri Apr  3 16:11:39 2020	(r359602)
@@ -1020,7 +1020,10 @@ struct linux_splice_args {
 	register_t dummy;
 };
 struct linux_sync_file_range_args {
-	register_t dummy;
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)];
+	char nbytes_l_[PADL_(l_loff_t)]; l_loff_t nbytes; char nbytes_r_[PADR_(l_loff_t)];
+	char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
 };
 struct linux_tee_args {
 	register_t dummy;

Modified: stable/12/sys/amd64/linux32/linux32_sysent.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_sysent.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux32/linux32_sysent.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -331,7 +331,7 @@ struct sysent linux32_sysent[] = {
 	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 311 = linux_set_robust_list */
 	{ AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 312 = linux_get_robust_list */
 	{ 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 313 = linux_splice */
-	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 314 = linux_sync_file_range */
+	{ AS(linux_sync_file_range_args), (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 314 = linux_sync_file_range */
 	{ 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },		/* 315 = linux_tee */
 	{ 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 316 = linux_vmsplice */
 	{ 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 317 = linux_move_pages */

Modified: stable/12/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_systrace_args.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux32/linux32_systrace_args.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -2118,7 +2118,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sync_file_range */
 	case 314: {
-		*n_args = 0;
+		struct linux_sync_file_range_args *p = params;
+		iarg[0] = p->fd; /* l_int */
+		iarg[1] = p->offset; /* l_loff_t */
+		iarg[2] = p->nbytes; /* l_loff_t */
+		uarg[3] = p->flags; /* unsigned int */
+		*n_args = 4;
 		break;
 	}
 	/* linux_tee */
@@ -6164,6 +6169,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sync_file_range */
 	case 314:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_loff_t";
+			break;
+		case 2:
+			p = "l_loff_t";
+			break;
+		case 3:
+			p = "unsigned int";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_tee */
 	case 315:
@@ -8654,6 +8675,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 313:
 	/* linux_sync_file_range */
 	case 314:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_tee */
 	case 315:
 	/* linux_vmsplice */

Modified: stable/12/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/12/sys/amd64/linux32/syscalls.master	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/amd64/linux32/syscalls.master	Fri Apr  3 16:11:39 2020	(r359602)
@@ -524,7 +524,8 @@
 312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, \
 				    struct linux_robust_list_head **head, l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
-314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
+314	AUE_NULL	STD	{ int linux_sync_file_range(l_int fd, l_loff_t offset,
+				    l_loff_t nbytes, unsigned int flags); }
 315	AUE_NULL	STD	{ int linux_tee(void); }
 316	AUE_NULL	STD	{ int linux_vmsplice(void); }
 ; Linux 2.6.18:

Modified: stable/12/sys/arm64/linux/linux_proto.h
==============================================================================
--- stable/12/sys/arm64/linux/linux_proto.h	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/arm64/linux/linux_proto.h	Fri Apr  3 16:11:39 2020	(r359602)
@@ -317,7 +317,10 @@ struct linux_fdatasync_args {
 	char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)];
 };
 struct linux_sync_file_range_args {
-	register_t dummy;
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)];
+	char nbytes_l_[PADL_(l_loff_t)]; l_loff_t nbytes; char nbytes_r_[PADR_(l_loff_t)];
+	char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
 };
 struct linux_timerfd_create_args {
 	char clockid_l_[PADL_(l_int)]; l_int clockid; char clockid_r_[PADR_(l_int)];

Modified: stable/12/sys/arm64/linux/linux_sysent.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_sysent.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/arm64/linux/linux_sysent.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -101,7 +101,7 @@ struct sysent linux_sysent[] = {
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 81 = linux_sync */
 	{ AS(fsync_args), (sy_call_t *)sys_fsync, AUE_FSYNC, NULL, 0, 0, 0, SY_THR_STATIC },	/* 82 = fsync */
 	{ AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 83 = linux_fdatasync */
-	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 84 = linux_sync_file_range */
+	{ AS(linux_sync_file_range_args), (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 84 = linux_sync_file_range */
 	{ AS(linux_timerfd_create_args), (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 85 = linux_timerfd_create */
 	{ AS(linux_timerfd_settime_args), (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 86 = linux_timerfd_settime */
 	{ AS(linux_timerfd_gettime_args), (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 87 = linux_timerfd_gettime */

Modified: stable/12/sys/arm64/linux/linux_systrace_args.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_systrace_args.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/arm64/linux/linux_systrace_args.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -597,7 +597,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sync_file_range */
 	case 84: {
-		*n_args = 0;
+		struct linux_sync_file_range_args *p = params;
+		iarg[0] = p->fd; /* l_int */
+		iarg[1] = p->offset; /* l_loff_t */
+		iarg[2] = p->nbytes; /* l_loff_t */
+		uarg[3] = p->flags; /* unsigned int */
+		*n_args = 4;
 		break;
 	}
 	/* linux_timerfd_create */
@@ -3025,6 +3030,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sync_file_range */
 	case 84:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_loff_t";
+			break;
+		case 2:
+			p = "l_loff_t";
+			break;
+		case 3:
+			p = "unsigned int";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_timerfd_create */
 	case 85:
@@ -5773,6 +5794,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 		break;
 	/* linux_sync_file_range */
 	case 84:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_timerfd_create */
 	case 85:
 		if (ndx == 0 || ndx == 1)

Modified: stable/12/sys/arm64/linux/syscalls.master
==============================================================================
--- stable/12/sys/arm64/linux/syscalls.master	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/arm64/linux/syscalls.master	Fri Apr  3 16:11:39 2020	(r359602)
@@ -450,7 +450,12 @@
 		    l_uint fd);
 	}
 84	AUE_NULL	STD	{
-		int linux_sync_file_range(void);
+		int linux_sync_file_range(
+		    l_int fd,
+		    l_loff_t offset,
+		    l_loff_t nbytes,
+		    unsigned int flags
+		);
 	}
 85	AUE_NULL	STD	{
 		int linux_timerfd_create(

Modified: stable/12/sys/i386/linux/linux_proto.h
==============================================================================
--- stable/12/sys/i386/linux/linux_proto.h	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/i386/linux/linux_proto.h	Fri Apr  3 16:11:39 2020	(r359602)
@@ -1038,7 +1038,10 @@ struct linux_splice_args {
 	register_t dummy;
 };
 struct linux_sync_file_range_args {
-	register_t dummy;
+	char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)];
+	char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)];
+	char nbytes_l_[PADL_(l_loff_t)]; l_loff_t nbytes; char nbytes_r_[PADR_(l_loff_t)];
+	char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
 };
 struct linux_tee_args {
 	register_t dummy;

Modified: stable/12/sys/i386/linux/linux_sysent.c
==============================================================================
--- stable/12/sys/i386/linux/linux_sysent.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/i386/linux/linux_sysent.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -331,7 +331,7 @@ struct sysent linux_sysent[] = {
 	{ AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 311 = linux_set_robust_list */
 	{ AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 312 = linux_get_robust_list */
 	{ 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 313 = linux_splice */
-	{ 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 314 = linux_sync_file_range */
+	{ AS(linux_sync_file_range_args), (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 314 = linux_sync_file_range */
 	{ 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },		/* 315 = linux_tee */
 	{ 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 316 = linux_vmsplice */
 	{ 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 317 = linux_move_pages */

Modified: stable/12/sys/i386/linux/linux_systrace_args.c
==============================================================================
--- stable/12/sys/i386/linux/linux_systrace_args.c	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/i386/linux/linux_systrace_args.c	Fri Apr  3 16:11:39 2020	(r359602)
@@ -2194,7 +2194,12 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 	}
 	/* linux_sync_file_range */
 	case 314: {
-		*n_args = 0;
+		struct linux_sync_file_range_args *p = params;
+		iarg[0] = p->fd; /* l_int */
+		iarg[1] = p->offset; /* l_loff_t */
+		iarg[2] = p->nbytes; /* l_loff_t */
+		uarg[3] = p->flags; /* unsigned int */
+		*n_args = 4;
 		break;
 	}
 	/* linux_tee */
@@ -6395,6 +6400,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 		break;
 	/* linux_sync_file_range */
 	case 314:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_loff_t";
+			break;
+		case 2:
+			p = "l_loff_t";
+			break;
+		case 3:
+			p = "unsigned int";
+			break;
+		default:
+			break;
+		};
 		break;
 	/* linux_tee */
 	case 315:
@@ -8932,6 +8953,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	case 313:
 	/* linux_sync_file_range */
 	case 314:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	/* linux_tee */
 	case 315:
 	/* linux_vmsplice */

Modified: stable/12/sys/i386/linux/syscalls.master
==============================================================================
--- stable/12/sys/i386/linux/syscalls.master	Fri Apr  3 16:10:42 2020	(r359601)
+++ stable/12/sys/i386/linux/syscalls.master	Fri Apr  3 16:11:39 2020	(r359602)
@@ -533,7 +533,8 @@
 312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, \
 				    struct linux_robust_list_head **head, l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
-314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
+314	AUE_NULL	STD	{ int linux_sync_file_range(l_int fd, l_loff_t offset,
+				    l_loff_t nbytes, unsigned int flags); }
 315	AUE_NULL	STD	{ int linux_tee(void); }
 316	AUE_NULL	STD	{ int linux_vmsplice(void); }
 ; Linux 2.6.18:


More information about the svn-src-all mailing list