svn commit: r336980 - head/sys/compat/freebsd32

Konstantin Belousov kib at FreeBSD.org
Tue Jul 31 17:15:32 UTC 2018


Author: kib
Date: Tue Jul 31 17:15:31 2018
New Revision: 336980
URL: https://svnweb.freebsd.org/changeset/base/336980

Log:
  Provide compat32 shims for sched_rr_get_interval(2).
  
  The interface uses struct timespec, which needs a translation.
  
  Reported and reviewed by:	asomers
  PR:	230175
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week
  Differential revision:	https://reviews.freebsd.org/D16525

Modified:
  head/sys/compat/freebsd32/freebsd32_misc.c
  head/sys/compat/freebsd32/syscalls.master

Modified: head/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- head/sys/compat/freebsd32/freebsd32_misc.c	Tue Jul 31 17:06:31 2018	(r336979)
+++ head/sys/compat/freebsd32/freebsd32_misc.c	Tue Jul 31 17:15:31 2018	(r336980)
@@ -3485,3 +3485,20 @@ freebsd32_ppoll(struct thread *td, struct freebsd32_pp
 
 	return (kern_poll(td, uap->fds, uap->nfds, tsp, ssp));
 }
+
+int
+freebsd32_sched_rr_get_interval(struct thread *td,
+    struct freebsd32_sched_rr_get_interval_args *uap)
+{
+	struct timespec ts;
+	struct timespec32 ts32;
+	int error;
+
+	error = kern_sched_rr_get_interval(td, uap->pid, &ts);
+	if (error == 0) {
+		CP(ts, ts32, tv_sec);
+		CP(ts, ts32, tv_nsec);
+		error = copyout(&ts32, uap->interval, sizeof(ts32));
+	}
+	return (error);
+}

Modified: head/sys/compat/freebsd32/syscalls.master
==============================================================================
--- head/sys/compat/freebsd32/syscalls.master	Tue Jul 31 17:06:31 2018	(r336979)
+++ head/sys/compat/freebsd32/syscalls.master	Tue Jul 31 17:15:31 2018	(r336980)
@@ -591,8 +591,9 @@
 331	AUE_NULL	NOPROTO	{ int sched_yield (void); }
 332	AUE_NULL	NOPROTO	{ int sched_get_priority_max (int policy); }
 333	AUE_NULL	NOPROTO	{ int sched_get_priority_min (int policy); }
-334	AUE_NULL	NOPROTO	{ int sched_rr_get_interval (pid_t pid, \
-				    struct timespec *interval); }
+334	AUE_NULL	STD	{ int freebsd32_sched_rr_get_interval ( \
+				    pid_t pid, \
+				    struct timespec32 *interval); }
 335	AUE_NULL	NOPROTO	{ int utrace(const void *addr, size_t len); }
 336	AUE_SENDFILE	COMPAT4	{ int freebsd32_sendfile(int fd, int s, \
 				    uint32_t offset1, uint32_t offset2, \


More information about the svn-src-head mailing list