Home | History | Annotate | Download | only in src
      1 #include <sched.h>
      2 /*
      3  * if we have an ancient sched.h we need to provide
      4  * definitions for cpu_set_t and associated macros
      5  */
      6 #if !defined __cpu_set_t_defined
      7 # define __cpu_set_t_defined
      8 /* Size definition for CPU sets.  */
      9 # define __CPU_SETSIZE	1024
     10 # define __NCPUBITS	(8 * sizeof (__cpu_mask))
     11 
     12 /* Type for array elements in 'cpu_set'.  */
     13 typedef unsigned long int __cpu_mask;
     14 
     15 /* Basic access functions.  */
     16 # define __CPUELT(cpu)	((cpu) / __NCPUBITS)
     17 # define __CPUMASK(cpu)	((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
     18 
     19 /* Data structure to describe CPU mask.  */
     20 typedef struct
     21 {
     22   __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
     23 } cpu_set_t;
     24 
     25 /* Access functions for CPU masks.  */
     26 # define __CPU_ZERO(cpusetp) \
     27   do {									      \
     28     unsigned int __i;							      \
     29     cpu_set_t *__arr = (cpusetp);					      \
     30     for (__i = 0; __i < sizeof (cpu_set_t) / sizeof (__cpu_mask); ++__i)      \
     31       __arr->__bits[__i] = 0;						      \
     32   } while (0)
     33 # define __CPU_SET(cpu, cpusetp) \
     34   ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
     35 # define __CPU_CLR(cpu, cpusetp) \
     36   ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
     37 # define __CPU_ISSET(cpu, cpusetp) \
     38   (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
     39 
     40 /* Access macros for `cpu_set'.  */
     41 #define CPU_SETSIZE __CPU_SETSIZE
     42 #define CPU_SET(cpu, cpusetp)	__CPU_SET (cpu, cpusetp)
     43 #define CPU_CLR(cpu, cpusetp)	__CPU_CLR (cpu, cpusetp)
     44 #define CPU_ISSET(cpu, cpusetp)	__CPU_ISSET (cpu, cpusetp)
     45 #define CPU_ZERO(cpusetp)	__CPU_ZERO (cpusetp)
     46 
     47 #endif
     48