1217309Snwhitehorn// SPDX-License-Identifier: LGPL-2.1 2217309Snwhitehorn// Definitions taken from glibc for use with older systems, same licensing. 3217309Snwhitehorn#ifndef _CPU_SET_SCHED_PERF_H 4217309Snwhitehorn#define _CPU_SET_SCHED_PERF_H 5217309Snwhitehorn 6217309Snwhitehorn#include <features.h> 7217309Snwhitehorn#include <sched.h> 8217309Snwhitehorn 9217309Snwhitehorn#ifndef CPU_EQUAL 10217309Snwhitehorn#ifndef __CPU_EQUAL_S 11217309Snwhitehorn#if __GNUC_PREREQ (2, 91) 12217309Snwhitehorn# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ 13217309Snwhitehorn (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) 14217309Snwhitehorn#else 15217309Snwhitehorn# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ 16217309Snwhitehorn (__extension__ \ 17217309Snwhitehorn ({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \ 18217309Snwhitehorn const __cpu_mask *__arr2 = (cpusetp2)->__bits; \ 19217309Snwhitehorn size_t __imax = (setsize) / sizeof (__cpu_mask); \ 20217309Snwhitehorn size_t __i; \ 21217309Snwhitehorn for (__i = 0; __i < __imax; ++__i) \ 22217309Snwhitehorn if (__arr1[__i] != __arr2[__i]) \ 23217309Snwhitehorn break; \ 24217309Snwhitehorn __i == __imax; })) 25217309Snwhitehorn#endif 26217309Snwhitehorn#endif // __CPU_EQUAL_S 27217309Snwhitehorn 28217309Snwhitehorn#define CPU_EQUAL(cpusetp1, cpusetp2) \ 29217309Snwhitehorn __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2) 30217309Snwhitehorn#endif // CPU_EQUAL 31217309Snwhitehorn 32217309Snwhitehorn#ifndef CPU_OR 33217309Snwhitehorn#ifndef __CPU_OP_S 34217309Snwhitehorn#define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \ 35217309Snwhitehorn (__extension__ \ 36217309Snwhitehorn ({ cpu_set_t *__dest = (destset); \ 37217309Snwhitehorn const __cpu_mask *__arr1 = (srcset1)->__bits; \ 38217309Snwhitehorn const __cpu_mask *__arr2 = (srcset2)->__bits; \ 39217309Snwhitehorn size_t __imax = (setsize) / sizeof (__cpu_mask); \ 40217309Snwhitehorn size_t __i; \ 41217309Snwhitehorn for (__i = 0; __i < __imax; ++__i) \ 42217309Snwhitehorn ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \ 43217309Snwhitehorn __dest; })) 44217309Snwhitehorn#endif // __CPU_OP_S 45217309Snwhitehorn 46#define CPU_OR(destset, srcset1, srcset2) \ 47 __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |) 48#endif // CPU_OR 49 50#endif // _CPU_SET_SCHED_PERF_H 51