1 /*
2 * cpuset.c -- CPU affinity.
3 *
4 * Copyright (c) 2020, NLnet Labs. All rights reserved.
5 *
6 * See LICENSE for the license.
7 *
8 */
9 #include "config.h"
10 #include "cpuset.h"
11
12 #include <stdlib.h>
13 #include <sys/types.h>
14 #include <unistd.h>
15
16 #ifndef HAVE_CPUSET_CREATE
cpuset_create(void)17 cpuset_t *cpuset_create(void)
18 {
19 cpuset_t *set = calloc(1, sizeof(*set));
20 return set;
21 }
22 #endif /* !HAVE_CPUSET_CREATE */
23
24 #ifndef HAVE_CPUSET_DESTROY
cpuset_destroy(cpuset_t * set)25 void cpuset_destroy(cpuset_t *set)
26 {
27 free(set);
28 }
29 #endif /* !HAVE_CPUSET_DESTROY */
30
31 #ifndef HAVE_CPUSET_ZERO
cpuset_zero(cpuset_t * set)32 void cpuset_zero(cpuset_t *set)
33 {
34 CPU_ZERO(set);
35 }
36 #endif /* !HAVE_CPUSET_ZERO */
37
38 #ifndef HAVE_CPUSET_SET
cpuset_set(cpuid_t cpu,cpuset_t * set)39 int cpuset_set(cpuid_t cpu, cpuset_t *set)
40 {
41 CPU_SET(cpu, set);
42 return 0;
43 }
44 #endif /* !HAVE_CPUSET_SET */
45
46 #ifndef HAVE_CPUSET_CLR
cpuset_clr(cpuid_t cpu,cpuset_t * set)47 int cpuset_clr(cpuid_t cpu, cpuset_t *set)
48 {
49 CPU_CLR(cpu, set);
50 return 0;
51 }
52 #endif /* !HAVE_CPUSET_CLR */
53
54 #ifndef HAVE_CPUSET_ISSET
cpuset_isset(cpuid_t cpu,const cpuset_t * set)55 int cpuset_isset(cpuid_t cpu, const cpuset_t *set)
56 {
57 return CPU_ISSET(cpu, set);
58 }
59 #endif /* !HAVE_CPUSET_ISSET */
60
61 #ifndef HAVE_CPUSET_SIZE
cpuset_size(const cpuset_t * set)62 size_t cpuset_size(const cpuset_t *set)
63 {
64 return sizeof(*set);
65 }
66 #endif /* !HAVE_CPUSET_SIZE */
67
68 #ifdef CPU_OR_THREE_ARGS
69 /* for Linux, use three arguments */
cpuset_or(cpuset_t * destset,const cpuset_t * srcset)70 void cpuset_or(cpuset_t *destset, const cpuset_t *srcset)
71 {
72 CPU_OR(destset, destset, srcset);
73 }
74 #else
75 /* for FreeBSD, use two arguments */
cpuset_or(cpuset_t * destset,const cpuset_t * srcset)76 void cpuset_or(cpuset_t *destset, const cpuset_t *srcset)
77 {
78 CPU_OR(destset, srcset);
79 }
80 #endif
81