mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 20:50:44 +00:00
MINOR: fd: move .initialized into fdtab[].state
No need to keep this flag apart any more, let's merge it into the global state. The bit was not cleared in fd_insert() because the only user is the function used to create and atomically send a log message to a pipe FD, which never registers the fd. Here we clear it nevertheless for the sake of clarity. Note that with an extra cleaning pass we could have a bit number here and simply use a BTS to test and set it.
This commit is contained in:
parent
030dae13a0
commit
0cc612818d
@ -65,6 +65,7 @@ enum {
|
||||
/* info/config bits */
|
||||
#define FD_LINGER_RISK_BIT 16 /* must kill lingering before closing */
|
||||
#define FD_CLONED_BIT 17 /* cloned socket, requires EPOLL_CTL_DEL on close */
|
||||
#define FD_INITIALIZED_BIT 18 /* init phase was done (e.g. output pipe set non-blocking) */
|
||||
|
||||
|
||||
/* and flag values */
|
||||
@ -101,6 +102,7 @@ enum {
|
||||
/* information/configuration flags */
|
||||
#define FD_LINGER_RISK (1U << FD_LINGER_RISK_BIT)
|
||||
#define FD_CLONED (1U << FD_CLONED_BIT)
|
||||
#define FD_INITIALIZED (1U << FD_INITIALIZED_BIT)
|
||||
|
||||
/* This is the value used to mark a file descriptor as dead. This value is
|
||||
* negative, this is important so that tests on fd < 0 properly match. It
|
||||
@ -149,7 +151,6 @@ struct fdtab {
|
||||
void (*iocb)(int fd); /* I/O handler */
|
||||
void *owner; /* the connection or listener associated with this fd, NULL if closed */
|
||||
unsigned int state; /* FD state for read and write directions (FD_EV_*) + FD_POLL_* */
|
||||
unsigned char initialized:1; /* 1 if init phase was done on this fd (e.g. set non-blocking) */
|
||||
unsigned char et_possible:1; /* 1 if edge-triggered is possible on this FD */
|
||||
unsigned char exported:1; /* 1 if the FD is exported and must not be closed */
|
||||
#ifdef DEBUG_FD
|
||||
|
4
src/fd.c
4
src/fd.c
@ -514,8 +514,8 @@ ssize_t fd_write_frag_line(int fd, size_t maxlen, const struct ist pfx[], size_t
|
||||
ha_thread_relax();
|
||||
}
|
||||
|
||||
if (unlikely(!fdtab[fd].initialized)) {
|
||||
fdtab[fd].initialized = 1;
|
||||
if (unlikely(!(fdtab[fd].state & FD_INITIALIZED))) {
|
||||
HA_ATOMIC_OR(&fdtab[fd].state, FD_INITIALIZED);
|
||||
if (!isatty(fd))
|
||||
fcntl(fd, F_SETFL, O_NONBLOCK);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user