mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 05:41:26 +02:00
MINOR: fd: add two new calls fd_cond_{recv,send}()
These two functions are used to enable recv/send but only if the FD is not marked as active yet. The purpose is to conditionally mark them as tentatively usable without interfering with the polling if polling was already enabled, when it's supposed to be likely true.
This commit is contained in:
parent
4ac9d064d2
commit
8f2825f3ab
@ -241,6 +241,26 @@ static inline void fd_may_recv(const int fd)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Report that FD <fd> may receive again without polling but only if its not
|
||||
* active yet. This is in order to speculatively try to enable I/Os when it's
|
||||
* highly likely that these will succeed, but without interfering with polling.
|
||||
*/
|
||||
static inline void fd_cond_recv(const int fd)
|
||||
{
|
||||
if ((fdtab[fd].state & (FD_EV_ACTIVE_R|FD_EV_READY_R)) == 0)
|
||||
HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_R_BIT);
|
||||
}
|
||||
|
||||
/* Report that FD <fd> may send again without polling but only if its not
|
||||
* active yet. This is in order to speculatively try to enable I/Os when it's
|
||||
* highly likely that these will succeed, but without interfering with polling.
|
||||
*/
|
||||
static inline void fd_cond_send(const int fd)
|
||||
{
|
||||
if ((fdtab[fd].state & (FD_EV_ACTIVE_W|FD_EV_READY_W)) == 0)
|
||||
HA_ATOMIC_BTS(&fdtab[fd].state, FD_EV_READY_W_BIT);
|
||||
}
|
||||
|
||||
/* Report that FD <fd> may receive and send without polling. Used at FD
|
||||
* initialization.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user