Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: LGPL-2.1
0002 // Definitions taken from glibc for use with older systems, same licensing.
0003 #ifndef _CPU_SET_SCHED_PERF_H
0004 #define _CPU_SET_SCHED_PERF_H
0005 
0006 #include <features.h>
0007 #include <sched.h>
0008 
0009 #ifndef CPU_EQUAL
0010 #ifndef __CPU_EQUAL_S
0011 #if __GNUC_PREREQ (2, 91)
0012 # define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
0013   (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
0014 #else
0015 # define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
0016   (__extension__                                  \
0017    ({ const __cpu_mask *__arr1 = (cpusetp1)->__bits;                  \
0018       const __cpu_mask *__arr2 = (cpusetp2)->__bits;                  \
0019       size_t __imax = (setsize) / sizeof (__cpu_mask);                \
0020       size_t __i;                                 \
0021       for (__i = 0; __i < __imax; ++__i)                      \
0022     if (__arr1[__i] != __arr2[__i])                       \
0023       break;                                  \
0024       __i == __imax; }))
0025 #endif
0026 #endif // __CPU_EQUAL_S
0027 
0028 #define CPU_EQUAL(cpusetp1, cpusetp2) \
0029   __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)
0030 #endif // CPU_EQUAL
0031 
0032 #ifndef CPU_OR
0033 #ifndef __CPU_OP_S
0034 #define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
0035   (__extension__                                  \
0036    ({ cpu_set_t *__dest = (destset);                          \
0037       const __cpu_mask *__arr1 = (srcset1)->__bits;               \
0038       const __cpu_mask *__arr2 = (srcset2)->__bits;               \
0039       size_t __imax = (setsize) / sizeof (__cpu_mask);                \
0040       size_t __i;                                 \
0041       for (__i = 0; __i < __imax; ++__i)                      \
0042     ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i];    \
0043       __dest; }))
0044 #endif // __CPU_OP_S
0045 
0046 #define CPU_OR(destset, srcset1, srcset2) \
0047   __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |)
0048 #endif // CPU_OR
0049 
0050 #endif // _CPU_SET_SCHED_PERF_H