From owner-svn-src-all@freebsd.org  Sun Mar 19 15:07:31 2017
Return-Path: <owner-svn-src-all@freebsd.org>
Delivered-To: svn-src-all@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id CBE5AD1297D;
 Sun, 19 Mar 2017 15:07:31 +0000 (UTC)
 (envelope-from trasz@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 8D77E1D43;
 Sun, 19 Mar 2017 15:07:31 +0000 (UTC)
 (envelope-from trasz@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v2JF7U1Y081945;
 Sun, 19 Mar 2017 15:07:30 GMT (envelope-from trasz@FreeBSD.org)
Received: (from trasz@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v2JF7UIk081942;
 Sun, 19 Mar 2017 15:07:30 GMT (envelope-from trasz@FreeBSD.org)
Message-Id: <201703191507.v2JF7UIk081942@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: trasz set sender to
 trasz@FreeBSD.org using -f
From: Edward Tomasz Napierala <trasz@FreeBSD.org>
Date: Sun, 19 Mar 2017 15:07:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject: svn commit: r315554 - in stable/11/sys: compat/freebsd32 kern sys
X-SVN-Group: stable-11
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Mar 2017 15:07:31 -0000

Author: trasz
Date: Sun Mar 19 15:07:30 2017
New Revision: 315554
URL: https://svnweb.freebsd.org/changeset/base/315554

Log:
  MFC r313015:
  
  Add kern_cpuset_getid() and kern_cpuset_setid(), and use them
  in compat32 instead of their sub_*() counterparts.
  
  Sponsored by:	DARPA, AFRL

Modified:
  stable/11/sys/compat/freebsd32/freebsd32_misc.c
  stable/11/sys/kern/kern_cpuset.c
  stable/11/sys/sys/syscallsubr.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- stable/11/sys/compat/freebsd32/freebsd32_misc.c	Sun Mar 19 14:46:40 2017	(r315553)
+++ stable/11/sys/compat/freebsd32/freebsd32_misc.c	Sun Mar 19 15:07:30 2017	(r315554)
@@ -2526,27 +2526,18 @@ int
 freebsd32_cpuset_setid(struct thread *td,
     struct freebsd32_cpuset_setid_args *uap)
 {
-	struct cpuset_setid_args ap;
 
-	ap.which = uap->which;
-	ap.id = PAIR32TO64(id_t,uap->id);
-	ap.setid = uap->setid;
-
-	return (sys_cpuset_setid(td, &ap));
+	return (kern_cpuset_setid(td, uap->which,
+	    PAIR32TO64(id_t, uap->id), uap->setid));
 }
 
 int
 freebsd32_cpuset_getid(struct thread *td,
     struct freebsd32_cpuset_getid_args *uap)
 {
-	struct cpuset_getid_args ap;
-
-	ap.level = uap->level;
-	ap.which = uap->which;
-	ap.id = PAIR32TO64(id_t,uap->id);
-	ap.setid = uap->setid;
 
-	return (sys_cpuset_getid(td, &ap));
+	return (kern_cpuset_getid(td, uap->level, uap->which,
+	    PAIR32TO64(id_t, uap->id), uap->setid));
 }
 
 int

Modified: stable/11/sys/kern/kern_cpuset.c
==============================================================================
--- stable/11/sys/kern/kern_cpuset.c	Sun Mar 19 14:46:40 2017	(r315553)
+++ stable/11/sys/kern/kern_cpuset.c	Sun Mar 19 15:07:30 2017	(r315554)
@@ -976,18 +976,26 @@ struct cpuset_setid_args {
 int
 sys_cpuset_setid(struct thread *td, struct cpuset_setid_args *uap)
 {
+
+	return (kern_cpuset_setid(td, uap->which, uap->id, uap->setid));
+}
+
+int
+kern_cpuset_setid(struct thread *td, cpuwhich_t which,
+    id_t id, cpusetid_t setid)
+{
 	struct cpuset *set;
 	int error;
 
 	/*
 	 * Presently we only support per-process sets.
 	 */
-	if (uap->which != CPU_WHICH_PID)
+	if (which != CPU_WHICH_PID)
 		return (EINVAL);
-	set = cpuset_lookup(uap->setid, td);
+	set = cpuset_lookup(setid, td);
 	if (set == NULL)
 		return (ESRCH);
-	error = cpuset_setproc(uap->id, set, NULL);
+	error = cpuset_setproc(id, set, NULL);
 	cpuset_rel(set);
 	return (error);
 }
@@ -1003,19 +1011,28 @@ struct cpuset_getid_args {
 int
 sys_cpuset_getid(struct thread *td, struct cpuset_getid_args *uap)
 {
+
+	return (kern_cpuset_getid(td, uap->level, uap->which, uap->id,
+	    uap->setid));
+}
+
+int
+kern_cpuset_getid(struct thread *td, cpulevel_t level, cpuwhich_t which,
+    id_t id, cpusetid_t *setid)
+{
 	struct cpuset *nset;
 	struct cpuset *set;
 	struct thread *ttd;
 	struct proc *p;
-	cpusetid_t id;
+	cpusetid_t tmpid;
 	int error;
 
-	if (uap->level == CPU_LEVEL_WHICH && uap->which != CPU_WHICH_CPUSET)
+	if (level == CPU_LEVEL_WHICH && which != CPU_WHICH_CPUSET)
 		return (EINVAL);
-	error = cpuset_which(uap->which, uap->id, &p, &ttd, &set);
+	error = cpuset_which(which, id, &p, &ttd, &set);
 	if (error)
 		return (error);
-	switch (uap->which) {
+	switch (which) {
 	case CPU_WHICH_TID:
 	case CPU_WHICH_PID:
 		thread_lock(ttd);
@@ -1030,7 +1047,7 @@ sys_cpuset_getid(struct thread *td, stru
 	case CPU_WHICH_DOMAIN:
 		return (EINVAL);
 	}
-	switch (uap->level) {
+	switch (level) {
 	case CPU_LEVEL_ROOT:
 		nset = cpuset_refroot(set);
 		cpuset_rel(set);
@@ -1041,10 +1058,10 @@ sys_cpuset_getid(struct thread *td, stru
 	case CPU_LEVEL_WHICH:
 		break;
 	}
-	id = set->cs_id;
+	tmpid = set->cs_id;
 	cpuset_rel(set);
 	if (error == 0)
-		error = copyout(&id, uap->setid, sizeof(id));
+		error = copyout(&tmpid, setid, sizeof(id));
 
 	return (error);
 }

Modified: stable/11/sys/sys/syscallsubr.h
==============================================================================
--- stable/11/sys/sys/syscallsubr.h	Sun Mar 19 14:46:40 2017	(r315553)
+++ stable/11/sys/sys/syscallsubr.h	Sun Mar 19 15:07:30 2017	(r315554)
@@ -87,6 +87,10 @@ int	kern_clock_settime(struct thread *td
 int	kern_close(struct thread *td, int fd);
 int	kern_connectat(struct thread *td, int dirfd, int fd,
 	    struct sockaddr *sa);
+int	kern_cpuset_getid(struct thread *td, cpulevel_t level,
+	    cpuwhich_t which, id_t id, cpusetid_t *setid);
+int	kern_cpuset_setid(struct thread *td, cpuwhich_t which,
+	    id_t id, cpusetid_t setid);
 int	kern_dup(struct thread *td, u_int mode, int flags, int old, int new);
 int	kern_execve(struct thread *td, struct image_args *args,
 	    struct mac *mac_p);