glusterfs: update for new API
[fio.git] / os / os-windows-xp.h
CommitLineData
dac7244b
SW
1#define FIO_MAX_CPUS MAXIMUM_PROCESSORS
2
3typedef DWORD_PTR os_cpu_mask_t;
4
5static inline int fio_setaffinity(int pid, os_cpu_mask_t cpumask)
6{
7 HANDLE h;
8 BOOL bSuccess = FALSE;
9
10 h = OpenThread(THREAD_QUERY_INFORMATION | THREAD_SET_INFORMATION, TRUE, pid);
11 if (h != NULL) {
12 bSuccess = SetThreadAffinityMask(h, cpumask);
13 if (!bSuccess)
14 log_err("fio_setaffinity failed: failed to set thread affinity (pid %d, mask %.16llx)\n", pid, cpumask);
15
16 CloseHandle(h);
17 } else {
18 log_err("fio_setaffinity failed: failed to get handle for pid %d\n", pid);
19 }
20
21 return (bSuccess)? 0 : -1;
22}
23
24static inline int fio_getaffinity(int pid, os_cpu_mask_t *mask)
25{
26 os_cpu_mask_t systemMask;
27
28 HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, pid);
29
30 if (h != NULL) {
31 GetProcessAffinityMask(h, mask, &systemMask);
32 CloseHandle(h);
33 } else {
34 log_err("fio_getaffinity failed: failed to get handle for pid %d\n", pid);
35 return -1;
36 }
37
38 return 0;
39}
40
41static inline void fio_cpu_clear(os_cpu_mask_t *mask, int cpu)
42{
43 *mask &= ~(1ULL << cpu);
44}
45
46static inline void fio_cpu_set(os_cpu_mask_t *mask, int cpu)
47{
48 *mask |= 1ULL << cpu;
49}
50
51static inline int fio_cpu_isset(os_cpu_mask_t *mask, int cpu)
52{
53 return (*mask & (1ULL << cpu)) != 0;
54}
55
56static inline int fio_cpu_count(os_cpu_mask_t *mask)
57{
58 return hweight64(*mask);
59}
60
61static inline int fio_cpuset_init(os_cpu_mask_t *mask)
62{
63 *mask = 0;
64 return 0;
65}
66
67static inline int fio_cpuset_exit(os_cpu_mask_t *mask)
68{
69 return 0;
70}