51 lines · c
1// SPDX-License-Identifier: LGPL-2.12// Definitions taken from glibc for use with older systems, same licensing.3#ifndef _CPU_SET_SCHED_PERF_H4#define _CPU_SET_SCHED_PERF_H5 6#include <features.h>7#include <sched.h>8 9#ifndef CPU_EQUAL10#ifndef __CPU_EQUAL_S11#if __GNUC_PREREQ (2, 91)12# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \13 (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)14#else15# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \16 (__extension__ \17 ({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \18 const __cpu_mask *__arr2 = (cpusetp2)->__bits; \19 size_t __imax = (setsize) / sizeof (__cpu_mask); \20 size_t __i; \21 for (__i = 0; __i < __imax; ++__i) \22 if (__arr1[__i] != __arr2[__i]) \23 break; \24 __i == __imax; }))25#endif26#endif // __CPU_EQUAL_S27 28#define CPU_EQUAL(cpusetp1, cpusetp2) \29 __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)30#endif // CPU_EQUAL31 32#ifndef CPU_OR33#ifndef __CPU_OP_S34#define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \35 (__extension__ \36 ({ cpu_set_t *__dest = (destset); \37 const __cpu_mask *__arr1 = (srcset1)->__bits; \38 const __cpu_mask *__arr2 = (srcset2)->__bits; \39 size_t __imax = (setsize) / sizeof (__cpu_mask); \40 size_t __i; \41 for (__i = 0; __i < __imax; ++__i) \42 ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \43 __dest; }))44#endif // __CPU_OP_S45 46#define CPU_OR(destset, srcset1, srcset2) \47 __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |)48#endif // CPU_OR49 50#endif // _CPU_SET_SCHED_PERF_H51