| version 1.203, 2011/02/01 01:39:20 |
version 1.204, 2011/06/26 16:42:42 |
| Line 598 fsocreate(int domain, struct socket **so |
|
| Line 598 fsocreate(int domain, struct socket **so |
|
| struct socket *so; |
struct socket *so; |
| struct file *fp; |
struct file *fp; |
| int fd, error; |
int fd, error; |
| |
int flags = type & SOCK_FLAGS_MASK; |
| |
|
| |
type &= ~SOCK_FLAGS_MASK; |
| if ((error = fd_allocfile(&fp, &fd)) != 0) |
if ((error = fd_allocfile(&fp, &fd)) != 0) |
| return (error); |
return error; |
| fp->f_flag = FREAD|FWRITE; |
fd_set_exclose(l, fd, (flags & SOCK_CLOEXEC) != 0); |
| |
fp->f_flag = FREAD|FWRITE|((flags & SOCK_NONBLOCK) ? FNONBLOCK : 0); |
| fp->f_type = DTYPE_SOCKET; |
fp->f_type = DTYPE_SOCKET; |
| fp->f_ops = &socketops; |
fp->f_ops = &socketops; |
| error = socreate(domain, &so, type, protocol, l, NULL); |
error = socreate(domain, &so, type, protocol, l, NULL); |
| Line 1379 soreceive(struct socket *so, struct mbuf |
|
| Line 1382 soreceive(struct socket *so, struct mbuf |
|
| type == SCM_RIGHTS) { |
type == SCM_RIGHTS) { |
| sounlock(so); |
sounlock(so); |
| splx(s); |
splx(s); |
| error = (*dom->dom_externalize)(cm, l); |
error = (*dom->dom_externalize)(cm, l, |
| |
(flags & MSG_CMSG_CLOEXEC) ? |
| |
O_CLOEXEC : 0); |
| s = splsoftnet(); |
s = splsoftnet(); |
| solock(so); |
solock(so); |
| } |
} |