static void hwloc_bitmap_from_ULONG_PTR(hwloc_bitmap_t set, ULONG_PTR mask) { #if SIZEOF_VOID_P == 8 hwloc_bitmap_from_ulong(set, mask & 0xffffffff); hwloc_bitmap_set_ith_ulong(set, 1, mask >> 32); #else hwloc_bitmap_from_ulong(set, mask); #endif }
JNIEXPORT void JNICALL Java_com_rr_core_os_NativeHooksImpl_jniSetPriority( JNIEnv *env, jclass clazz, jint cpumask, jint priority ) { int topodepth; hwloc_topology_t topology; hwloc_cpuset_t cpuset; hwloc_topology_init(&topology); hwloc_topology_load(topology); topodepth = hwloc_topology_get_depth(topology); cpuset = hwloc_bitmap_alloc(); hwloc_bitmap_from_ulong( cpuset, (unsigned int)cpumask ); char *str; hwloc_bitmap_asprintf(&str, cpuset); printf("cpumask [%d] => hwloc [%s]\n", cpumask, str); if (hwloc_set_cpubind(topology, cpuset, HWLOC_CPUBIND_THREAD)) { printf("Couldn't bind cpuset %s\n", str); } else { printf("BOUND cpuset %s\n", str); } free(str); /* Free our cpuset copy */ hwloc_bitmap_free(cpuset); /* Destroy topology object. */ hwloc_topology_destroy(topology); }