linux/tools/perf/util/cpu-set-sched.h
<<
>>
Prefs
   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
  51