forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.7 KiB
50 lines
1.7 KiB
// SPDX-License-Identifier: LGPL-2.1 |
|
// Definitions taken from glibc for use with older systems, same licensing. |
|
#ifndef _CPU_SET_SCHED_PERF_H |
|
#define _CPU_SET_SCHED_PERF_H |
|
|
|
#include <features.h> |
|
#include <sched.h> |
|
|
|
#ifndef CPU_EQUAL |
|
#ifndef __CPU_EQUAL_S |
|
#if __GNUC_PREREQ (2, 91) |
|
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ |
|
(__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) |
|
#else |
|
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ |
|
(__extension__ \ |
|
({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \ |
|
const __cpu_mask *__arr2 = (cpusetp2)->__bits; \ |
|
size_t __imax = (setsize) / sizeof (__cpu_mask); \ |
|
size_t __i; \ |
|
for (__i = 0; __i < __imax; ++__i) \ |
|
if (__arr1[__i] != __arr2[__i]) \ |
|
break; \ |
|
__i == __imax; })) |
|
#endif |
|
#endif // __CPU_EQUAL_S |
|
|
|
#define CPU_EQUAL(cpusetp1, cpusetp2) \ |
|
__CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2) |
|
#endif // CPU_EQUAL |
|
|
|
#ifndef CPU_OR |
|
#ifndef __CPU_OP_S |
|
#define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \ |
|
(__extension__ \ |
|
({ cpu_set_t *__dest = (destset); \ |
|
const __cpu_mask *__arr1 = (srcset1)->__bits; \ |
|
const __cpu_mask *__arr2 = (srcset2)->__bits; \ |
|
size_t __imax = (setsize) / sizeof (__cpu_mask); \ |
|
size_t __i; \ |
|
for (__i = 0; __i < __imax; ++__i) \ |
|
((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \ |
|
__dest; })) |
|
#endif // __CPU_OP_S |
|
|
|
#define CPU_OR(destset, srcset1, srcset2) \ |
|
__CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |) |
|
#endif // CPU_OR |
|
|
|
#endif // _CPU_SET_SCHED_PERF_H
|
|
|