mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-14 17:37:46 +00:00
MINOR: threads: add each thread's clockid into the global thread_info
This is the per-thread CPU runtime clock, it will be used to measure the CPU usage of each thread and by the lockup detection mechanism. It must only be retrieved at the beginning of run_thread_poll_loop() since the thread must already have been started for this. But it must be done before performing any per-thread initcall so that all thread init functions have access to the clock ID. Note that it could make sense to always have this clockid available even in non-threaded situations and place the process' clock there instead. But it would add portability issues which are currently easy to deal with by disabling threads so it may not be worth it for now.
This commit is contained in:
parent
522cfbc1ea
commit
91e6df01fa
@ -245,6 +245,7 @@ extern int atexit_flag;
|
||||
|
||||
extern struct thread_info {
|
||||
__decl_hathreads(pthread_t pthread);
|
||||
__decl_hathreads(clockid_t clock_id);
|
||||
} thread_info[MAX_THREADS];
|
||||
|
||||
/* bit values to go with "warned" above */
|
||||
|
@ -2497,6 +2497,11 @@ static void *run_thread_poll_loop(void *data)
|
||||
struct per_thread_deinit_fct *ptdf;
|
||||
|
||||
ha_set_tid((unsigned long)data);
|
||||
|
||||
#ifdef USE_THREAD
|
||||
pthread_getcpuclockid(pthread_self(), &thread_info[tid].clock_id);
|
||||
#endif
|
||||
|
||||
tv_update_date(-1,-1);
|
||||
|
||||
/* per-thread init calls performed here are not allowed to snoop on
|
||||
|
Loading…
Reference in New Issue
Block a user