aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Johnston <markjdb@gmail.com>2020-11-22 16:05:16 -0500
committerMark Johnston <markjdb@gmail.com>2020-11-23 09:20:29 -0500
commit878fb17aeaf5e85e8be85fb4ed20890529dfb354 (patch)
tree483c7f91fdf27e80ca35ae80fed07ceb92343ec6
parent0d27f508b6b35d3b12b9fafebd40a1f36950c8f3 (diff)
sys/freebsd: add cpuset(2) and related system calls
-rw-r--r--sys/freebsd/cpuset.txt33
-rw-r--r--sys/freebsd/cpuset.txt.const25
2 files changed, 58 insertions, 0 deletions
diff --git a/sys/freebsd/cpuset.txt b/sys/freebsd/cpuset.txt
new file mode 100644
index 000000000..d1dcd1711
--- /dev/null
+++ b/sys/freebsd/cpuset.txt
@@ -0,0 +1,33 @@
+# Copyright 2020 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+include <sys/param.h>
+include <sys/cpuset.h>
+include <sys/domainset.h>
+
+define CPU_SETSIZE CPU_MAXSIZE / 64
+define DOMAIN_SETSIZE DOMAINSET_MAXSIZE / 64
+
+resource cpuset[int32]
+
+cpuset(setid ptr[out, cpuset])
+cpuset_setid(which flags[cpuset_which], id int64, setid cpuset)
+cpuset_getid(level flags[cpuset_level], which flags[cpuset_which], id int64, setid ptr[out, cpuset])
+
+cpuset_getaffinity(level flags[cpuset_level], which flags[cpuset_which], id int64, size bytesize[mask], mask ptr[out, cpuset_mask])
+cpuset_setaffinity(level flags[cpuset_level], which flags[cpuset_which], id int64, size bytesize[mask], mask ptr[in, cpuset_mask])
+
+cpuset_getdomain(level flags[cpuset_level], which flags[cpuset_which], id int64, size bytesize[mask], mask ptr[out, domainset_mask], policy ptr[out, flags[domainset_policy, int32]])
+cpuset_setdomain(level flags[cpuset_level], which flags[cpuset_which], id int64, size bytesize[mask], mask ptr[in, domainset_mask], policy flags[domainset_policy])
+
+cpuset_level = CPU_LEVEL_ROOT, CPU_LEVEL_CPUSET, CPU_LEVEL_WHICH
+cpuset_which = CPU_WHICH_TID, CPU_WHICH_PID, CPU_WHICH_JAIL, CPU_WHICH_CPUSET, CPU_WHICH_IRQ, CPU_WHICH_INTRHANDLER, CPU_WHICH_ITHREAD, CPU_WHICH_DOMAIN
+domainset_policy = DOMAINSET_POLICY_ROUNDROBIN, DOMAINSET_POLICY_FIRSTTOUCH, DOMAINSET_POLICY_PREFER
+
+cpuset_mask {
+ mask array[int64, CPU_SETSIZE]
+}
+
+domainset_mask {
+ mask array[int64, DOMAIN_SETSIZE]
+}
diff --git a/sys/freebsd/cpuset.txt.const b/sys/freebsd/cpuset.txt.const
new file mode 100644
index 000000000..8e3f38fb6
--- /dev/null
+++ b/sys/freebsd/cpuset.txt.const
@@ -0,0 +1,25 @@
+# Code generated by syz-sysgen. DO NOT EDIT.
+arches = 386, amd64
+CPU_LEVEL_CPUSET = 2
+CPU_LEVEL_ROOT = 1
+CPU_LEVEL_WHICH = 3
+CPU_SETSIZE = 1
+CPU_WHICH_CPUSET = 3
+CPU_WHICH_DOMAIN = 6
+CPU_WHICH_INTRHANDLER = 7
+CPU_WHICH_IRQ = 4
+CPU_WHICH_ITHREAD = 8
+CPU_WHICH_JAIL = 5
+CPU_WHICH_PID = 2
+CPU_WHICH_TID = 1
+DOMAINSET_POLICY_FIRSTTOUCH = 2
+DOMAINSET_POLICY_PREFER = 3
+DOMAINSET_POLICY_ROUNDROBIN = 1
+DOMAIN_SETSIZE = 4
+SYS_cpuset = 484
+SYS_cpuset_getaffinity = 487
+SYS_cpuset_getdomain = 561
+SYS_cpuset_getid = 486
+SYS_cpuset_setaffinity = 488
+SYS_cpuset_setdomain = 562
+SYS_cpuset_setid = 485