This source file includes following definitions.
- hwloc_cpuset_to_glibc_sched_affinity
- hwloc_cpuset_from_glibc_sched_affinity
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 #ifndef HWLOC_GLIBC_SCHED_H
  18 #define HWLOC_GLIBC_SCHED_H
  19 
  20 #include <hwloc.h>
  21 #include <hwloc/helper.h>
  22 #include <assert.h>
  23 
  24 #if !defined _GNU_SOURCE || !defined _SCHED_H || (!defined CPU_SETSIZE && !defined sched_priority)
  25 #error Please make sure to include sched.h before including glibc-sched.h, and define _GNU_SOURCE before any inclusion of sched.h
  26 #endif
  27 
  28 
  29 #ifdef __cplusplus
  30 extern "C" {
  31 #endif
  32 
  33 
  34 #ifdef HWLOC_HAVE_CPU_SET
  35 
  36 
  37 
  38 
  39 
  40 
  41 
  42 
  43 
  44 
  45 
  46 
  47 
  48 
  49 
  50 
  51 
  52 
  53 
  54 
  55 static __hwloc_inline int
  56 hwloc_cpuset_to_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t hwlocset,
  57                                     cpu_set_t *schedset, size_t schedsetsize)
  58 {
  59 #ifdef CPU_ZERO_S
  60   unsigned cpu;
  61   CPU_ZERO_S(schedsetsize, schedset);
  62   hwloc_bitmap_foreach_begin(cpu, hwlocset)
  63     CPU_SET_S(cpu, schedsetsize, schedset);
  64   hwloc_bitmap_foreach_end();
  65 #else 
  66   unsigned cpu;
  67   CPU_ZERO(schedset);
  68   assert(schedsetsize == sizeof(cpu_set_t));
  69   hwloc_bitmap_foreach_begin(cpu, hwlocset)
  70     CPU_SET(cpu, schedset);
  71   hwloc_bitmap_foreach_end();
  72 #endif 
  73   return 0;
  74 }
  75 
  76 
  77 
  78 
  79 
  80 
  81 
  82 
  83 static __hwloc_inline int
  84 hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t hwlocset,
  85                                        const cpu_set_t *schedset, size_t schedsetsize)
  86 {
  87   int cpu;
  88 #ifdef CPU_ZERO_S
  89   int count;
  90 #endif
  91   hwloc_bitmap_zero(hwlocset);
  92 #ifdef CPU_ZERO_S
  93   count = CPU_COUNT_S(schedsetsize, schedset);
  94   cpu = 0;
  95   while (count) {
  96     if (CPU_ISSET_S(cpu, schedsetsize, schedset)) {
  97       hwloc_bitmap_set(hwlocset, cpu);
  98       count--;
  99     }
 100     cpu++;
 101   }
 102 #else 
 103   
 104 
 105 
 106   assert(schedsetsize == sizeof(cpu_set_t));
 107   for(cpu=0; cpu<CPU_SETSIZE; cpu++)
 108     if (CPU_ISSET(cpu, schedset))
 109       hwloc_bitmap_set(hwlocset, cpu);
 110 #endif 
 111   return 0;
 112 }
 113 
 114 
 115 
 116 
 117 #endif 
 118 
 119 
 120 #ifdef __cplusplus
 121 } 
 122 #endif
 123 
 124 
 125 #endif