@@ -56,70 +56,6 @@ static inline void drop_policy(void)
5656#endif
5757}
5858
59- #ifdef __BIONIC__
60- #define pthread_setaffinity_np (tid ,sz ,s ) {} /* only do process affinity */
61- #endif
62-
63- static void affine_to_cpu_mask (int id , unsigned long mask ) {
64- cpu_set_t set ;
65- CPU_ZERO (& set );
66- for (uint8_t i = 0 ; i < num_processors ; i ++ ) {
67- // cpu mask
68- if (mask & (1UL <<i )) { CPU_SET (i , & set ); }
69- }
70- if (id == -1 ) {
71- // process affinity
72- sched_setaffinity (0 , sizeof (& set ), & set );
73- } else {
74- // thread only
75- pthread_setaffinity_np (thr_info [id ].pth , sizeof (& set ), & set );
76- }
77- }
78-
79- #elif defined(WIN32 ) /* Windows */
80- static inline void drop_policy (void ) { }
81- static void affine_to_cpu_mask (int id , unsigned long mask ) {
82- if (id == -1 )
83- SetProcessAffinityMask (GetCurrentProcess (), mask );
84- else
85- SetThreadAffinityMask (GetCurrentThread (), mask );
86- }
87- #else
88- static inline void drop_policy (void ) { }
89- static void affine_to_cpu_mask (int id , unsigned long mask ) { }
90- #endif
91-
92- // static inline void affine_to_cpu(int id, int cpu)
93- // {
94- // cpu_set_t set;
95-
96- // CPU_ZERO(&set);
97- // CPU_SET(cpu, &set);
98- // sched_setaffinity(0, sizeof(set), &set);
99- // }
100- // #elif defined(__FreeBSD__) /* FreeBSD specific policy and affinity management */
101- // #include <sys/cpuset.h>
102- // static inline void drop_policy(void)
103- // {
104- // }
105-
106- // static inline void affine_to_cpu(int id, int cpu)
107- // {
108- // cpuset_t set;
109- // CPU_ZERO(&set);
110- // CPU_SET(cpu, &set);
111- // cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(cpuset_t), &set);
112- // }
113- // #else
114- // static inline void drop_policy(void)
115- // {
116- // }
117-
118- // static inline void affine_to_cpu(int id, int cpu)
119- // {
120- // }
121- // #endif
122-
12359enum workio_commands {
12460 WC_GET_WORK ,
12561 WC_SUBMIT_WORK ,
@@ -313,6 +249,39 @@ static pthread_mutex_t g_work_lock;
313249static bool submit_old = false;
314250static char * lp_id ;
315251
252+ #ifdef __BIONIC__
253+ #define pthread_setaffinity_np (tid ,sz ,s ) {} /* only do process affinity */
254+ #endif
255+
256+ static void affine_to_cpu_mask (int id , unsigned long mask ) {
257+ cpu_set_t set ;
258+ CPU_ZERO (& set );
259+ for (uint8_t i = 0 ; i < num_processors ; i ++ ) {
260+ // cpu mask
261+ if (mask & (1UL <<i )) { CPU_SET (i , & set ); }
262+ }
263+ if (id == -1 ) {
264+ // process affinity
265+ sched_setaffinity (0 , sizeof (& set ), & set );
266+ } else {
267+ // thread only
268+ pthread_setaffinity_np (thr_info [id ].pth , sizeof (& set ), & set );
269+ }
270+ }
271+
272+ #elif defined(WIN32) /* Windows */
273+ static inline void drop_policy (void ) { }
274+ static void affine_to_cpu_mask (int id , unsigned long mask ) {
275+ if (id == -1 )
276+ SetProcessAffinityMask (GetCurrentProcess (), mask );
277+ else
278+ SetThreadAffinityMask (GetCurrentThread (), mask );
279+ }
280+ #else
281+ static inline void drop_policy (void ) { }
282+ static void affine_to_cpu_mask (int id , unsigned long mask ) { }
283+ #endif
284+
316285static inline void work_free (struct work * w )
317286{
318287 free (w -> txs );
0 commit comments