Modify soalloc() API so that it accepts a malloc flags argument rather
than a "waitok" argument. Callers now passing M_WAITOK or M_NOWAIT rather than 0 or 1. This simplifies the soalloc() logic, and also makes the waiting behavior of soalloc() more clear in the calling context. Submitted by: sam
This commit is contained in:
parent
2cf6bdac50
commit
2bc87dcfbe
@ -189,7 +189,7 @@ sonewconn(head, connstatus)
|
||||
|
||||
if (head->so_qlen > 3 * head->so_qlimit / 2)
|
||||
return ((struct socket *)0);
|
||||
so = soalloc(0);
|
||||
so = soalloc(M_NOWAIT);
|
||||
if (so == NULL)
|
||||
return ((struct socket *)0);
|
||||
if ((head->so_options & SO_ACCEPTFILTER) != 0)
|
||||
|
@ -128,21 +128,14 @@ SYSCTL_INT(_kern_ipc_zero_copy, OID_AUTO, send, CTLFLAG_RW,
|
||||
* soalloc() returns a socket with a ref count of 0.
|
||||
*/
|
||||
struct socket *
|
||||
soalloc(waitok)
|
||||
int waitok;
|
||||
soalloc(int mflags)
|
||||
{
|
||||
struct socket *so;
|
||||
#ifdef MAC
|
||||
int error;
|
||||
#endif
|
||||
int flag;
|
||||
|
||||
if (waitok == 1)
|
||||
flag = M_WAITOK;
|
||||
else
|
||||
flag = M_NOWAIT;
|
||||
flag |= M_ZERO;
|
||||
so = uma_zalloc(socket_zone, flag);
|
||||
so = uma_zalloc(socket_zone, mflags | M_ZERO);
|
||||
if (so) {
|
||||
#ifdef MAC
|
||||
error = mac_init_socket(so, flag);
|
||||
@ -195,7 +188,7 @@ socreate(dom, aso, type, proto, cred, td)
|
||||
|
||||
if (prp->pr_type != type)
|
||||
return (EPROTOTYPE);
|
||||
so = soalloc(1);
|
||||
so = soalloc(M_WAITOK);
|
||||
if (so == NULL)
|
||||
return (ENOBUFS);
|
||||
|
||||
|
@ -189,7 +189,7 @@ sonewconn(head, connstatus)
|
||||
|
||||
if (head->so_qlen > 3 * head->so_qlimit / 2)
|
||||
return ((struct socket *)0);
|
||||
so = soalloc(0);
|
||||
so = soalloc(M_NOWAIT);
|
||||
if (so == NULL)
|
||||
return ((struct socket *)0);
|
||||
if ((head->so_options & SO_ACCEPTFILTER) != 0)
|
||||
|
@ -378,8 +378,8 @@ int sbwait(struct sockbuf *sb);
|
||||
int sb_lock(struct sockbuf *sb);
|
||||
int soabort(struct socket *so);
|
||||
int soaccept(struct socket *so, struct sockaddr **nam);
|
||||
struct socket *soalloc(int mflags);
|
||||
int socheckuid(struct socket *so, uid_t uid);
|
||||
struct socket *soalloc(int waitok);
|
||||
int sobind(struct socket *so, struct sockaddr *nam, struct thread *td);
|
||||
void socantrcvmore(struct socket *so);
|
||||
void socantsendmore(struct socket *so);
|
||||
|
Loading…
x
Reference in New Issue
Block a user