diff options
author | jeff <jeff@FreeBSD.org> | 2008-03-02 07:39:22 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2008-03-02 07:39:22 +0000 |
commit | 694203deddc2570fd74a74f384e602bc5b335850 (patch) | |
tree | 08c6ca461fae4d8b5341e887a545b2d167f50daf /sys/kern/syscalls.master | |
parent | 3bd7de5a7ca507ccc85a2a4ede9e0fcb70122d19 (diff) | |
download | FreeBSD-src-694203deddc2570fd74a74f384e602bc5b335850.zip FreeBSD-src-694203deddc2570fd74a74f384e602bc5b335850.tar.gz |
Add cpuset, an api for thread to cpu binding and cpu resource grouping
and assignment.
- Add a reference to a struct cpuset in each thread that is inherited from
the thread that created it.
- Release the reference when the thread is destroyed.
- Add prototypes for syscalls and macros for manipulating cpusets in
sys/cpuset.h
- Add syscalls to create, get, and set new numbered cpusets:
cpuset(), cpuset_{get,set}id()
- Add syscalls for getting and setting affinity masks for cpusets or
individual threads: cpuid_{get,set}affinity()
- Add types for the 'level' and 'which' parameters for the cpuset. This
will permit expansion of the api to cover cpu masks for other objects
identifiable with an id_t integer. For example, IRQs and Jails may be
coming soon.
- The root set 0 contains all valid cpus. All thread initially belong to
cpuset 1. This permits migrating all threads off of certain cpus to
reserve them for special applications.
Sponsored by: Nokia
Discussed with: arch, rwatson, brooks, davidxu, deischen
Reviewed by: antoine
Diffstat (limited to 'sys/kern/syscalls.master')
-rw-r--r-- | sys/kern/syscalls.master | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index c22f99c..c31df8d 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -850,5 +850,18 @@ 482 AUE_SHMOPEN STD { int shm_open(const char *path, int flags, \ mode_t mode); } 483 AUE_SHMUNLINK STD { int shm_unlink(const char *path); } +484 AUE_NULL STD { int cpuset(cpusetid_t *setid); } +485 AUE_NULL STD { int cpuset_setid(cpuwhich_t which, id_t id, \ + cpusetid_t setid); } +486 AUE_NULL STD { int cpuset_getid(cpulevel_t level, \ + cpuwhich_t which, id_t id, \ + cpusetid_t *setid); } +487 AUE_NULL STD { int cpuset_getaffinity(cpulevel_t level, \ + cpuwhich_t which, id_t id, int cpusetsize, \ + long *mask); } +488 AUE_NULL STD { int cpuset_setaffinity(cpulevel_t level, \ + cpuwhich_t which, id_t id, int cpusetsize, \ + long *mask); } + ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master |