-#FIG 3.2 Produced by xfig version 2.1
+#FIG 3.2 Produced by xfig version 3.2.7b
Portrait
Center
Metric
Single
-2
1200 2
-6 2520 990 4725 3645
-4 0 0 50 -1 16 10 0.0000 4 150 855 2520 1125 R=ready flag\001
-4 0 0 50 -1 16 10 0.0000 4 150 885 2520 1290 A=active flag\001
-4 0 0 50 -1 16 10 0.0000 4 150 1365 2520 2475 fd_want sets A flag\001
-4 0 0 50 -1 16 10 0.0000 4 150 1440 2520 2640 fd_stop clears A flag\001
-4 0 0 50 -1 16 10 0.0000 4 150 1995 2520 3465 fd_done does what's best to\001
-4 0 0 50 -1 16 10 0.0000 4 120 2025 2700 3630 minimize the amount of work.\001
-4 0 0 50 -1 16 10 0.0000 4 150 1905 2520 3300 update() updates the poller.\001
-4 0 0 50 -1 16 10 0.0000 4 150 2190 2520 2970 fd_cant clears R flag (EAGAIN)\001
-4 0 0 50 -1 16 10 0.0000 4 150 2115 2520 3135 fd_rdy sets R flag (poll return)\001
--6
2 1 0 1 0 7 50 -1 -1 0.000 1 0 -1 1 0 2
1 1 1.00 90.00 180.00
1125 1350 1125 1800
4 1 0 50 -1 16 8 0.0000 4 120 240 1350 3060 !R,A\001
4 1 0 50 -1 16 8 0.0000 4 120 270 1350 3960 !R,!A\001
4 0 0 50 -1 16 8 0.0000 4 120 255 1665 1710 stop\001
-4 2 0 50 -1 16 8 0.0000 4 105 285 1035 2610 done\001
+4 0 0 50 -1 16 10 0.0000 4 150 855 2520 1125 R=ready flag\001
+4 0 0 50 -1 16 10 0.0000 4 150 885 2520 1290 A=active flag\001
+4 0 0 50 -1 16 10 0.0000 4 150 1365 2520 2475 fd_want sets A flag\001
+4 0 0 50 -1 16 10 0.0000 4 150 1440 2520 2640 fd_stop clears A flag\001
+4 0 0 50 -1 16 10 0.0000 4 150 1905 2520 3300 update() updates the poller.\001
+4 0 0 50 -1 16 10 0.0000 4 150 2190 2520 2970 fd_cant clears R flag (EAGAIN)\001
+4 0 0 50 -1 16 10 0.0000 4 150 2115 2520 3135 fd_rdy sets R flag (poll return)\001
HA_ATOMIC_OR(&fdtab[fd].state, FD_EV_READY_RW);
}
-/* Disable readiness when active. This is useful to interrupt reading when it
- * is suspected that the end of data might have been reached (eg: short read).
- * This can only be done using level-triggered pollers, so if any edge-triggered
- * is ever implemented, a test will have to be added here.
- */
-static inline void fd_done_recv(const int fd)
-{
- /* removing ready never changes polled status */
- if ((fdtab[fd].state & (FD_EV_ACTIVE_R|FD_EV_READY_R)) != (FD_EV_ACTIVE_R|FD_EV_READY_R) ||
- !HA_ATOMIC_BTR(&fdtab[fd].state, FD_EV_READY_R_BIT))
- return;
-}
-
/* Report that FD <fd> cannot send anymore without polling (EAGAIN detected). */
static inline void fd_cant_send(const int fd)
{