REORG: polling: rename "spec_e" to "state" and "spec_p" to "cache"
We're completely changing the way FDs will be polled. There will be no
more speculative I/O since we'll know the exact FD state, so these will
only be cached events.
First, let's fix a few field names which become confusing. "spec_e" was
used to store a speculative I/O event state. Now we'll store the whole
R/W states for the FD there. "spec_p" was used to store a speculative
I/O cache position. Now let's clearly call it "cache".
diff --git a/include/proto/fd.h b/include/proto/fd.h
index a67a320..3563a08 100644
--- a/include/proto/fd.h
+++ b/include/proto/fd.h
@@ -97,11 +97,11 @@
/* allocate an entry for a speculative event. This can be done at any time. */
static inline void alloc_spec_entry(const int fd)
{
- if (fdtab[fd].spec_p)
+ if (fdtab[fd].cache)
/* FD already in speculative I/O list */
return;
fd_nbspec++;
- fdtab[fd].spec_p = fd_nbspec;
+ fdtab[fd].cache = fd_nbspec;
fd_spec[fd_nbspec-1] = fd;
}
@@ -113,16 +113,16 @@
{
unsigned int pos;
- pos = fdtab[fd].spec_p;
+ pos = fdtab[fd].cache;
if (!pos)
return;
- fdtab[fd].spec_p = 0;
+ fdtab[fd].cache = 0;
fd_nbspec--;
if (likely(pos <= fd_nbspec)) {
/* was not the last entry */
fd = fd_spec[fd_nbspec];
fd_spec[pos - 1] = fd;
- fdtab[fd].spec_p = pos;
+ fdtab[fd].cache = pos;
}
}
diff --git a/include/types/fd.h b/include/types/fd.h
index 23550cb..3bfe48f 100644
--- a/include/types/fd.h
+++ b/include/types/fd.h
@@ -69,8 +69,8 @@
struct fdtab {
int (*iocb)(int fd); /* I/O handler, returns FD_WAIT_* */
void *owner; /* the connection or listener associated with this fd, NULL if closed */
- unsigned int spec_p; /* speculative polling: position in spec list+1. 0=not in list. */
- unsigned char state; /* FD state for read and write directions */
+ unsigned int cache; /* position+1 in the FD cache. 0=not in cache. */
+ unsigned char state; /* FD state for read and write directions (4+4 bits) */
unsigned char ev; /* event seen in return of poll() : FD_POLL_* */
unsigned char new:1; /* 1 if this fd has just been created */
unsigned char updated:1; /* 1 if this fd is already in the update list */