|
|
| version 1.8, 2004/03/06 01:58:54 | version 1.9, 2004/04/10 00:48:06 |
|---|---|
| Line 54 | Line 54 |
| #include <sys/aio.h> /* for aio_swake proto */ | #include <sys/aio.h> /* for aio_swake proto */ |
| #include <sys/event.h> | #include <sys/event.h> |
| #include <sys/thread2.h> | |
| #include <sys/msgport2.h> | |
| int maxsockets; | int maxsockets; |
| /* | /* |
| Line 298 sowakeup(so, sb) | Line 301 sowakeup(so, sb) |
| struct socket *so; | struct socket *so; |
| struct sockbuf *sb; | struct sockbuf *sb; |
| { | { |
| selwakeup(&sb->sb_sel); | struct selinfo *selinfo = &sb->sb_sel; |
| selwakeup(selinfo); | |
| sb->sb_flags &= ~SB_SEL; | sb->sb_flags &= ~SB_SEL; |
| if (sb->sb_flags & SB_WAIT) { | if (sb->sb_flags & SB_WAIT) { |
| sb->sb_flags &= ~SB_WAIT; | sb->sb_flags &= ~SB_WAIT; |
| Line 310 sowakeup(so, sb) | Line 315 sowakeup(so, sb) |
| (*so->so_upcall)(so, so->so_upcallarg, M_DONTWAIT); | (*so->so_upcall)(so, so->so_upcallarg, M_DONTWAIT); |
| if (sb->sb_flags & SB_AIO) | if (sb->sb_flags & SB_AIO) |
| aio_swake(so, sb); | aio_swake(so, sb); |
| KNOTE(&sb->sb_sel.si_note, 0); | KNOTE(&selinfo->si_note, 0); |
| if (sb->sb_flags & SB_MEVENT) { | |
| struct netmsg_so_notify *msg, *nmsg; | |
| TAILQ_FOREACH_MUTABLE(msg, &selinfo->si_mlist, nm_list, nmsg) { | |
| if (msg->nm_predicate((struct netmsg *)msg)) { | |
| struct lwkt_msg *lmsg = &msg->nm_lmsg; | |
| lwkt_replymsg(lmsg, lmsg->ms_error); | |
| TAILQ_REMOVE(&selinfo->si_mlist, msg, nm_list); | |
| } | |
| } | |
| if (TAILQ_EMPTY(&sb->sb_sel.si_mlist)) | |
| sb->sb_flags &= ~SB_MEVENT; | |
| } | |
| } | } |
| /* | /* |