chiark
/
gitweb
/
~mdw
/
secnet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
main loop: Use <bsd/sys/queue.h> for poll interest list
[secnet]
/
secnet.c
diff --git
a/secnet.c
b/secnet.c
index 7fabb1b50f473292f64a681d38b7fa43d0c4a59d..84aac21ea8d1f14a16c07ce55b01ea9bac5a11e2 100644
(file)
--- a/
secnet.c
+++ b/
secnet.c
@@
-42,9
+42,9
@@
struct poll_interest {
int32_t max_nfds;
int32_t nfds;
cstring_t desc;
int32_t max_nfds;
int32_t nfds;
cstring_t desc;
-
struct poll_interest *next
;
+
LIST_ENTRY(poll_interest) entry
;
};
};
-static
struct poll_interest *reg=NULL
;
+static
LIST_HEAD(, poll_interest) reg = LIST_HEAD_INITIALIZER(®)
;
static int32_t total_nfds=10;
static bool_t finished=False;
static int32_t total_nfds=10;
static bool_t finished=False;
@@
-241,8
+241,7
@@
void register_for_poll(void *st, beforepoll_fn *before,
i->desc=desc;
assert(total_nfds < INT_MAX - max_nfds);
total_nfds+=max_nfds;
i->desc=desc;
assert(total_nfds < INT_MAX - max_nfds);
total_nfds+=max_nfds;
- i->next=reg;
- reg=i;
+ LIST_INSERT_HEAD(®, i, entry);
return;
}
return;
}
@@
-310,7
+309,7
@@
static void run(void)
now_global=((uint64_t)tv_now_global.tv_sec*(uint64_t)1000)+
((uint64_t)tv_now_global.tv_usec/(uint64_t)1000);
idx=0;
now_global=((uint64_t)tv_now_global.tv_sec*(uint64_t)1000)+
((uint64_t)tv_now_global.tv_usec/(uint64_t)1000);
idx=0;
-
for (i=reg; i; i=i->next
) {
+
LIST_FOREACH(i, ®, entry
) {
int check;
for (check=0; check<i->nfds; check++) {
if(fds[idx+check].revents & POLLNVAL) {
int check;
for (check=0; check<i->nfds; check++) {
if(fds[idx+check].revents & POLLNVAL) {
@@
-323,7
+322,7
@@
static void run(void)
remain=total_nfds;
idx=0;
timeout=-1;
remain=total_nfds;
idx=0;
timeout=-1;
-
for (i=reg; i; i=i->next
) {
+
LIST_FOREACH(i, ®, entry
) {
nfds=remain;
rv=i->before(i->state, fds+idx, &nfds, &timeout);
if (rv!=0) {
nfds=remain;
rv=i->before(i->state, fds+idx, &nfds, &timeout);
if (rv!=0) {