mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-20 22:01:49 -04:00
MINOR: fd: optimize fd_claim_tgid() for use in fd_insert()
fd_claim_tgid() uses a CAS to set the desired TGID on the FD. It's only called from fd_insert() where in the vast majority of cases, the tgid and refcount are zero before the call. However the loop was optimized for the case where it was equal to the desired TGID, systematically causing one extra round in the loop there. Better start assuming a zero value.
This commit is contained in:
parent
97da942ba6
commit
4d882bd800
1 changed files with 2 additions and 2 deletions
|
|
@ -382,12 +382,12 @@ static inline void fd_claim_tgid(int fd, uint desired_tgid)
|
|||
BUG_ON(!desired_tgid);
|
||||
|
||||
desired_tgid += 0x10000; // refcount=1
|
||||
old = desired_tgid;
|
||||
old = 0; // assume unused (most likely)
|
||||
while (1) {
|
||||
old &= 0xffff;
|
||||
if (_HA_ATOMIC_CAS(&fdtab[fd].refc_tgid, &old, desired_tgid))
|
||||
break;
|
||||
__ha_cpu_relax();
|
||||
old &= 0xffff;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue