cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cpu-set-sched.h (1721B)


      1// SPDX-License-Identifier: LGPL-2.1
      2// Definitions taken from glibc for use with older systems, same licensing.
      3#ifndef _CPU_SET_SCHED_PERF_H
      4#define _CPU_SET_SCHED_PERF_H
      5
      6#include <features.h>
      7#include <sched.h>
      8
      9#ifndef CPU_EQUAL
     10#ifndef __CPU_EQUAL_S
     11#if __GNUC_PREREQ (2, 91)
     12# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
     13  (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
     14#else
     15# 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#endif
     26#endif // __CPU_EQUAL_S
     27
     28#define CPU_EQUAL(cpusetp1, cpusetp2) \
     29  __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)
     30#endif // CPU_EQUAL
     31
     32#ifndef CPU_OR
     33#ifndef __CPU_OP_S
     34#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_S
     45
     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