mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-25 06:53:03 +00:00
MINOR: threads: Fix pthread_setaffinity_np on FreeBSD.
As with the call to cpuset_setaffinity(), FreeBSD expects the argument to pthread_setaffinity_np() to be a cpuset_t, not an unsigned long, so the call was silently failing. This should probably be backported to 1.8.
This commit is contained in:
parent
baf6ea4bd5
commit
829aa24459
@ -2915,10 +2915,24 @@ int main(int argc, char **argv)
|
||||
global.cpu_map.thread[relative_pid-1][i] &= global.cpu_map.proc[relative_pid-1];
|
||||
|
||||
if (i < LONGBITS && /* only the first 32/64 threads may be pinned */
|
||||
global.cpu_map.thread[relative_pid-1][i]) /* only do this if the thread has a THREAD map */
|
||||
global.cpu_map.thread[relative_pid-1][i]) {/* only do this if the thread has a THREAD map */
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
cpuset_t cpuset;
|
||||
#else
|
||||
cpu_set_t cpuset;
|
||||
#endif
|
||||
int j;
|
||||
unsigned long cpu_map = global.cpu_map.thread[relative_pid-1][i];
|
||||
|
||||
CPU_ZERO(&cpuset);
|
||||
|
||||
while ((j = ffsl(cpu_map)) > 0) {
|
||||
CPU_SET(j - 1, &cpuset);
|
||||
cpu_map &= ~(1 << (j - 1));
|
||||
}
|
||||
pthread_setaffinity_np(threads[i],
|
||||
sizeof(unsigned long),
|
||||
(void *)&global.cpu_map.thread[relative_pid-1][i]);
|
||||
sizeof(cpuset), &cpuset);
|
||||
}
|
||||
}
|
||||
#endif /* !USE_CPU_AFFINITY */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user