1 #define FIO_MAX_CPUS MAXIMUM_PROCESSORS
3 typedef DWORD_PTR os_cpu_mask_t;
5 static inline int fio_setaffinity(int pid, os_cpu_mask_t cpumask)
10 h = OpenThread(THREAD_QUERY_INFORMATION | THREAD_SET_INFORMATION, TRUE, pid);
12 bSuccess = SetThreadAffinityMask(h, cpumask);
14 log_err("fio_setaffinity failed: failed to set thread affinity (pid %d, mask %.16llx)\n", pid, cpumask);
18 log_err("fio_setaffinity failed: failed to get handle for pid %d\n", pid);
21 return (bSuccess)? 0 : -1;
24 static inline int fio_getaffinity(int pid, os_cpu_mask_t *mask)
26 os_cpu_mask_t systemMask;
28 HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, pid);
31 GetProcessAffinityMask(h, mask, &systemMask);
34 log_err("fio_getaffinity failed: failed to get handle for pid %d\n", pid);
41 static inline void fio_cpu_clear(os_cpu_mask_t *mask, int cpu)
43 *mask &= ~(1ULL << cpu);
46 static inline void fio_cpu_set(os_cpu_mask_t *mask, int cpu)
51 static inline int fio_cpu_isset(os_cpu_mask_t *mask, int cpu)
53 return (*mask & (1ULL << cpu)) != 0;
56 static inline int fio_cpu_count(os_cpu_mask_t *mask)
58 return hweight64(*mask);
61 static inline int fio_cpuset_init(os_cpu_mask_t *mask)
67 static inline int fio_cpuset_exit(os_cpu_mask_t *mask)