00001
00002
00003
00004
00005
00010 #ifndef HWLOC_CPUSET_H
00011 #define HWLOC_CPUSET_H
00012
00013 #include <hwloc/config.h>
00014
00015
00029 typedef struct hwloc_cpuset_s * hwloc_cpuset_t;
00030 typedef const struct hwloc_cpuset_s * hwloc_const_cpuset_t;
00031
00032
00033
00034
00035
00036
00038 hwloc_cpuset_t hwloc_cpuset_alloc(void);
00039
00041 void hwloc_cpuset_free(hwloc_cpuset_t set);
00042
00044 hwloc_cpuset_t hwloc_cpuset_dup(hwloc_cpuset_t set);
00045
00047 void hwloc_cpuset_copy(hwloc_cpuset_t dst, hwloc_cpuset_t src);
00048
00049
00050
00051
00052
00053
00061 int hwloc_cpuset_snprintf(char * restrict buf, size_t buflen, hwloc_const_cpuset_t set);
00062
00068 int hwloc_cpuset_asprintf(char ** strp, hwloc_const_cpuset_t set);
00069
00074 hwloc_cpuset_t hwloc_cpuset_from_string(const char * restrict string);
00075
00076
00082 void hwloc_cpuset_zero(hwloc_cpuset_t set);
00083
00085 void hwloc_cpuset_fill(hwloc_cpuset_t set);
00086
00088 void hwloc_cpuset_from_ulong(hwloc_cpuset_t set, unsigned long mask);
00089
00091 void hwloc_cpuset_from_ith_ulong(hwloc_cpuset_t set, int i, unsigned long mask);
00092
00094 unsigned long hwloc_cpuset_to_ulong(hwloc_const_cpuset_t set);
00095
00097 unsigned long hwloc_cpuset_to_ith_ulong(hwloc_const_cpuset_t set, int i);
00098
00100 void hwloc_cpuset_cpu(hwloc_cpuset_t set, unsigned cpu);
00101
00103 void hwloc_cpuset_all_but_cpu(hwloc_cpuset_t set, unsigned cpu);
00104
00106 void hwloc_cpuset_set(hwloc_cpuset_t set, unsigned cpu);
00107
00109 void hwloc_cpuset_set_range(hwloc_cpuset_t set, unsigned begincpu, unsigned endcpu);
00110
00112 void hwloc_cpuset_clr(hwloc_cpuset_t set, unsigned cpu);
00113
00115 int hwloc_cpuset_isset(hwloc_const_cpuset_t set, unsigned cpu);
00116
00118 int hwloc_cpuset_iszero(hwloc_const_cpuset_t set);
00119
00121 int hwloc_cpuset_isfull(hwloc_const_cpuset_t set);
00122
00124 int hwloc_cpuset_isequal (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
00125
00127 int hwloc_cpuset_intersects (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
00128
00130 int hwloc_cpuset_isincluded (hwloc_const_cpuset_t sub_set, hwloc_const_cpuset_t super_set);
00131
00133 void hwloc_cpuset_orset (hwloc_cpuset_t set, hwloc_const_cpuset_t modifier_set);
00134
00136 void hwloc_cpuset_andset (hwloc_cpuset_t set, hwloc_const_cpuset_t modifier_set);
00137
00139 void hwloc_cpuset_clearset (hwloc_cpuset_t set, hwloc_const_cpuset_t modifier_set);
00140
00142 void hwloc_cpuset_xorset (hwloc_cpuset_t set, hwloc_const_cpuset_t modifier_set);
00143
00145 int hwloc_cpuset_first(hwloc_const_cpuset_t set);
00146
00148 int hwloc_cpuset_last(hwloc_const_cpuset_t set);
00149
00156 void hwloc_cpuset_singlify(hwloc_cpuset_t set);
00157
00163 int hwloc_cpuset_compar_first(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
00164
00170 int hwloc_cpuset_compar(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
00171
00173 int hwloc_cpuset_weight(hwloc_const_cpuset_t set);
00174
00180 #define hwloc_cpuset_foreach_begin(cpu, set) \
00181 for (cpu = 0; cpu < HWLOC_NBMAXCPUS; cpu++) \
00182 if (hwloc_cpuset_isset(set, cpu)) {
00183
00186 #define hwloc_cpuset_foreach_end() \
00187 }
00188
00191 #endif