- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List

# cpuset.h

    00001 /*
    00002  * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
    00003  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
    00004  * See COPYING in top-level directory.
    00005  */
    00006
    00011 #ifndef HWLOC_CPUSET_H
    00012 #define HWLOC_CPUSET_H
    00013
    00014 #include <hwloc/config.h>
    00015
    00016
    00017 #ifdef __cplusplus
    00018 extern "C" {
    00019 #endif
    00020
    00021
    00035 typedef struct hwloc_cpuset_s * hwloc_cpuset_t;
    00036 typedef const struct hwloc_cpuset_s * hwloc_const_cpuset_t;
    00037
    00038
    00039 /*
    00040  * CPU set allocation, freeing and copying.
    00041  */
    00042
    00049 HWLOC_DECLSPEC hwloc_cpuset_t hwloc_cpuset_alloc(void) __hwloc_attribute_malloc;
    00050
    00052 HWLOC_DECLSPEC void hwloc_cpuset_free(hwloc_cpuset_t set);
    00053
    00055 HWLOC_DECLSPEC hwloc_cpuset_t hwloc_cpuset_dup(hwloc_const_cpuset_t set) __hwloc_attribute_malloc;
    00056
    00058 HWLOC_DECLSPEC void hwloc_cpuset_copy(hwloc_cpuset_t dst, hwloc_const_cpuset_t src);
    00059
    00060
    00061 /*
    00062  * Cpuset/String Conversion
    00063  */
    00064
    00072 HWLOC_DECLSPEC int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_cpuset_t set);
    00073
    00079 HWLOC_DECLSPEC int hwloc_cpuset_asprintf(char ** strp, hwloc_const_cpuset_t set);
    00080
    00085 HWLOC_DECLSPEC int hwloc_cpuset_from_string(hwloc_cpuset_t set, const char * __hwloc_restrict string);
    00086
    00087
    00088 /*
    00089  *  Primitives & macros for building, modifying and consulting "sets" of cpus.
    00090  */
    00091
    00093 HWLOC_DECLSPEC void hwloc_cpuset_zero(hwloc_cpuset_t set);
    00094
    00096 HWLOC_DECLSPEC void hwloc_cpuset_fill(hwloc_cpuset_t set);
    00097
    00099 HWLOC_DECLSPEC void hwloc_cpuset_from_ulong(hwloc_cpuset_t set, unsigned long mask);
    00100
    00102 HWLOC_DECLSPEC void hwloc_cpuset_from_ith_ulong(hwloc_cpuset_t set, unsigned i, unsigned long mask);
    00103
    00105 HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ulong(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00106
    00108 HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ith_ulong(hwloc_const_cpuset_t set, unsigned i) __hwloc_attribute_pure;
    00109
    00111 HWLOC_DECLSPEC void hwloc_cpuset_cpu(hwloc_cpuset_t set, unsigned cpu);
    00112
    00114 HWLOC_DECLSPEC void hwloc_cpuset_all_but_cpu(hwloc_cpuset_t set, unsigned cpu);
    00115
    00117 HWLOC_DECLSPEC void hwloc_cpuset_set(hwloc_cpuset_t set, unsigned cpu);
    00118
    00120 HWLOC_DECLSPEC void hwloc_cpuset_set_range(hwloc_cpuset_t set, unsigned begincpu, unsigned endcpu);
    00121
    00123 HWLOC_DECLSPEC void hwloc_cpuset_clr(hwloc_cpuset_t set, unsigned cpu);
    00124
    00126 HWLOC_DECLSPEC void hwloc_cpuset_clr_range(hwloc_cpuset_t set, unsigned begincpu, unsigned endcpu);
    00127
    00129 HWLOC_DECLSPEC int hwloc_cpuset_isset(hwloc_const_cpuset_t set, unsigned cpu) __hwloc_attribute_pure;
    00130
    00132 HWLOC_DECLSPEC int hwloc_cpuset_iszero(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00133
    00135 HWLOC_DECLSPEC int hwloc_cpuset_isfull(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00136
    00138 HWLOC_DECLSPEC int hwloc_cpuset_isequal (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
    00139
    00141 HWLOC_DECLSPEC int hwloc_cpuset_intersects (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
    00142
    00144 HWLOC_DECLSPEC int hwloc_cpuset_isincluded (hwloc_const_cpuset_t sub_set, hwloc_const_cpuset_t super_set) __hwloc_attribute_pure;
    00145
    00147 HWLOC_DECLSPEC void hwloc_cpuset_or (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
    00148
    00150 HWLOC_DECLSPEC void hwloc_cpuset_and (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
    00151
    00153 HWLOC_DECLSPEC void hwloc_cpuset_andnot (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
    00154
    00156 HWLOC_DECLSPEC void hwloc_cpuset_xor (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
    00157
    00159 HWLOC_DECLSPEC void hwloc_cpuset_not (hwloc_cpuset_t res, hwloc_const_cpuset_t set);
    00160
    00165 HWLOC_DECLSPEC int hwloc_cpuset_first(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00166
    00171 HWLOC_DECLSPEC int hwloc_cpuset_last(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00172
    00177 HWLOC_DECLSPEC int hwloc_cpuset_next(hwloc_const_cpuset_t set, unsigned prev_cpu) __hwloc_attribute_pure;
    00178
    00185 HWLOC_DECLSPEC void hwloc_cpuset_singlify(hwloc_cpuset_t set);
    00186
    00192 HWLOC_DECLSPEC int hwloc_cpuset_compare_first(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
    00193
    00199 HWLOC_DECLSPEC int hwloc_cpuset_compare(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
    00200
    00206 HWLOC_DECLSPEC int hwloc_cpuset_weight(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
    00207
    00217 #define hwloc_cpuset_foreach_begin(cpu, set) \
    00218 do { \
    00219         for (cpu = hwloc_cpuset_first(set); \
    00220              (unsigned) cpu != (unsigned) -1; \
    00221              cpu = hwloc_cpuset_next(set, cpu)) { \
    00222
    00226 #define hwloc_cpuset_foreach_end() \
    00227         } \
    00228 } while (0)
    00229
    00233 #ifdef __cplusplus
    00234 } /* extern "C" */
    00235 #endif
    00236
    00237
    00238 #endif /* HWLOC_CPUSET_H */