mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-29 22:57:06 +00:00
MINOR: threads: make tg point to the current thread's group
A the "tg" thread-local variable now always points to the current thread group. It's pre-initializd to the first one during boot and is set to point to the thread's one by ha_set_tid(). This last one takes care of checking whether the thread group was assigned or not because it may be called during boot before threads are initialized.
This commit is contained in:
parent
d04bc3ac21
commit
fc69e410e6
@ -90,6 +90,7 @@ enum { tid = 0 };
|
||||
static inline void ha_set_tid(unsigned int tid)
|
||||
{
|
||||
ti = &ha_thread_info[tid];
|
||||
tg = ti->tg ? ti->tg : &ha_tgroup_info[0];
|
||||
th_ctx = &ha_thread_ctx[tid];
|
||||
}
|
||||
|
||||
@ -201,12 +202,17 @@ extern THREAD_LOCAL unsigned int tid; /* The thread id */
|
||||
|
||||
#define ha_sigmask(how, set, oldset) pthread_sigmask(how, set, oldset)
|
||||
|
||||
/* sets the thread ID and the TID bit for the current thread */
|
||||
/* sets the thread ID, TID bit and thread cfg/ctx pointers for the current
|
||||
* thread. Since it may be called during early boot even before threads are
|
||||
* initialized, we have to be extra careful about some fields which may still
|
||||
* be null. For example tg may be null during a part of the boot.
|
||||
*/
|
||||
static inline void ha_set_tid(unsigned int data)
|
||||
{
|
||||
tid = data;
|
||||
tid_bit = (1UL << tid);
|
||||
ti = &ha_thread_info[tid];
|
||||
tg = ti->tg ? ti->tg : &ha_tgroup_info[0];
|
||||
th_ctx = &ha_thread_ctx[tid];
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user