From 878fb17aeaf5e85e8be85fb4ed20890529dfb354 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Sun, 22 Nov 2020 16:05:16 -0500 Subject: sys/freebsd: add cpuset(2) and related system calls --- sys/freebsd/cpuset.txt | 33 +++++++++++++++++++++++++++++++++ sys/freebsd/cpuset.txt.const | 25 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 sys/freebsd/cpuset.txt create mode 100644 sys/freebsd/cpuset.txt.const 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 +include +include + +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 -- cgit mrf-deployment