]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
libc: tests: add some tests for cpuset(2)
authorKyle Evans <kevans@FreeBSD.org>
Thu, 31 Dec 2020 18:30:43 +0000 (12:30 -0600)
committerKyle Evans <kevans@FreeBSD.org>
Thu, 31 Dec 2020 18:31:54 +0000 (12:31 -0600)
commit1fc421287d5ddbcfba99412cf968ee3490383fe7
tree2d172bbb13530854948cc810445d799974f84840
parent9e1281eabafa4aaf84828e70488c1802717b59af
libc: tests: add some tests for cpuset(2)

The cpuset(2) tests should be run as root (require.user properly set) with
>= 3 cpus for maximum coverage. All tests that want to modify the cpuset
don't assume any particular cpu layout (i.e. the first cpu may not be 0, the
last may not be first + count) and the following scenarios are tested:

1.) newset: basic execute cpuset() to grab a new cpuset, make sure the
    assigned cpuset then has a different ID.
2.) transient: create a new cpuset then assign the process its original
    cpuset, ensuring that the one we created is now gone.
3.) deadlk: test assigning an anonymous mask, then resetting the process
    base affinity with 1-cpu overlap w.r.t. the anonymous mask and with
    0-cpu overlap w.r.t. the anonymous mask.
4.) jail_attach_newbase: process attaches to a jail with its own
    cpuset+mask (e.g. cpuset -c -l 1,2 jail -c path=/ command=/bin/sh)
5.) jail_attach_newbase_plain: process attaches to a jail with its own
    cpuset (e.g. cpuset -c jail -c path=/ command=/bin/sh)
6.) jail_attach_prevbase: process attaches to a jail with the containing
    jail's root cpuset (e.g. jail -c path=/ command=/bin/sh)
7.) jail_attach_plain: process attaches to a jail with the containing jail's
    root cpuset+mask.
8.) badparent: creates a new cpuset and modifies the anonymous thread mask,
    then setid's back to the original and checks that cpuset_getid() returns
    the expected set.

Differential Revision: https://reviews.freebsd.org/D27307
lib/libc/tests/sys/Makefile
lib/libc/tests/sys/cpuset_test.c [new file with mode: 0644]