version 1.85, 2003/08/07 16:31:59 |
version 1.91, 2003/10/21 22:55:47 |
Line 90 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 90 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <sys/resourcevar.h> |
#include <sys/resourcevar.h> |
#include <sys/pool.h> |
#include <sys/pool.h> |
#include <sys/event.h> |
#include <sys/event.h> |
|
#include <sys/poll.h> |
|
|
#include <uvm/uvm.h> |
#include <uvm/uvm.h> |
|
|
|
|
soinit(void) |
soinit(void) |
{ |
{ |
|
|
|
/* Set the initial adjusted socket buffer size. */ |
|
if (sb_max_set(sb_max)) |
|
panic("bad initial sb_max value: %lu\n", sb_max); |
|
|
pool_init(&socket_pool, sizeof(struct socket), 0, 0, 0, |
pool_init(&socket_pool, sizeof(struct socket), 0, 0, 0, |
"sockpl", NULL); |
"sockpl", NULL); |
|
|
Line 1266 sorflush(struct socket *so) |
|
Line 1271 sorflush(struct socket *so) |
|
socantrcvmore(so); |
socantrcvmore(so); |
sbunlock(sb); |
sbunlock(sb); |
asb = *sb; |
asb = *sb; |
memset((caddr_t)sb, 0, sizeof(*sb)); |
/* |
|
* Clear most of the sockbuf structure, but leave some of the |
|
* fields valid. |
|
*/ |
|
memset(&sb->sb_startzero, 0, |
|
sizeof(*sb) - offsetof(struct sockbuf, sb_startzero)); |
splx(s); |
splx(s); |
if (pr->pr_flags & PR_RIGHTS && pr->pr_domain->dom_dispose) |
if (pr->pr_flags & PR_RIGHTS && pr->pr_domain->dom_dispose) |
(*pr->pr_domain->dom_dispose)(asb.sb_mb); |
(*pr->pr_domain->dom_dispose)(asb.sb_mb); |
Line 1501 sogetopt(struct socket *so, int level, i |
|
Line 1511 sogetopt(struct socket *so, int level, i |
|
void |
void |
sohasoutofband(struct socket *so) |
sohasoutofband(struct socket *so) |
{ |
{ |
struct proc *p; |
fownsignal(so->so_pgid, SIGURG, POLL_PRI, POLLPRI|POLLRDBAND, so); |
|
|
if (so->so_pgid < 0) |
|
gsignal(-so->so_pgid, SIGURG); |
|
else if (so->so_pgid > 0 && (p = pfind(so->so_pgid)) != 0) |
|
psignal(p, SIGURG); |
|
selwakeup(&so->so_rcv.sb_sel); |
selwakeup(&so->so_rcv.sb_sel); |
} |
} |
|
|