MINOR: support cpu-map feature through the compile option USE_CPU_AFFINITY on FreeBSD
diff --git a/src/haproxy.c b/src/haproxy.c
index ae790c4..681109d 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -50,6 +50,10 @@
#define __USE_GNU
#include <sched.h>
#undef __USE_GNU
+#ifdef __FreeBSD__
+#include <sys/param.h>
+#include <sys/cpuset.h>
+#endif
#endif
#ifdef DEBUG_FULL
@@ -1780,8 +1784,12 @@
if (proc < global.nbproc && /* child */
proc < LONGBITS && /* only the first 32/64 processes may be pinned */
global.cpu_map[proc]) /* only do this if the process has a CPU map */
+#ifdef __FreeBSD__
+ cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, sizeof(unsigned long), (void *)&global.cpu_map[proc]);
+#else
sched_setaffinity(0, sizeof(unsigned long), (void *)&global.cpu_map[proc]);
#endif
+#endif
/* close the pidfile both in children and father */
if (pidfd >= 0) {
//lseek(pidfd, 0, SEEK_SET); /* debug: emulate eglibc bug */