mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-10 17:17:06 +02:00
MINOR: thread: implement the detection of forced cpu affinity
Create a function thread_cpu_mask_forced. Its purpose is to report if a restrictive cpu mask is active for the current proces, for example due to a taskset invocation. It is only implemented for the linux platform currently.
This commit is contained in:
parent
982fb53390
commit
4c9efdecf5
@ -277,6 +277,10 @@ static inline unsigned long thread_isolated()
|
|||||||
return threads_want_rdv_mask & ~threads_harmless_mask & tid_bit;
|
return threads_want_rdv_mask & ~threads_harmless_mask & tid_bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns 1 if the cpu set is currently restricted for the process else 0.
|
||||||
|
* Currently only implemented for the Linux platform.
|
||||||
|
*/
|
||||||
|
int thread_cpu_mask_forced();
|
||||||
|
|
||||||
#if !defined(DEBUG_THREAD) && !defined(DEBUG_FULL)
|
#if !defined(DEBUG_THREAD) && !defined(DEBUG_FULL)
|
||||||
|
|
||||||
|
13
src/thread.c
13
src/thread.c
@ -193,6 +193,19 @@ static int thread_cpus_enabled()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns 1 if the cpu set is currently restricted for the process else 0.
|
||||||
|
* Currently only implemented for the Linux platform.
|
||||||
|
*/
|
||||||
|
int thread_cpu_mask_forced()
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
const int cpus_avail = sysconf(_SC_NPROCESSORS_ONLN);
|
||||||
|
return cpus_avail != thread_cpus_enabled();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/* Depending on the platform and how libpthread was built, pthread_exit() may
|
/* Depending on the platform and how libpthread was built, pthread_exit() may
|
||||||
* involve some code in libgcc_s that would be loaded on exit for the first
|
* involve some code in libgcc_s that would be loaded on exit for the first
|
||||||
* time, causing aborts if the process is chrooted. It's harmless bit very
|
* time, causing aborts if the process is chrooted. It's harmless bit very
|
||||||
|
Loading…
Reference in New Issue
Block a user