From 40fdffce86741a630d3f9afc2caa1358194195dc Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Mon, 1 Jun 2015 23:05:34 +0100 Subject: [PATCH] syscall_net: fill in sockpending --- Kernel/syscall_net.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Kernel/syscall_net.c b/Kernel/syscall_net.c index 390ca664..74c6b77b 100644 --- a/Kernel/syscall_net.c +++ b/Kernel/syscall_net.c @@ -24,6 +24,8 @@ struct socket #define SS_LISTENING 3 #define SS_CONNECTING 4 #define SS_CONNECTED 5 +#define SS_ACCEPTWAIT 6 + uint8_t s_data; struct sockaddrs s_addr; }; @@ -65,10 +67,16 @@ static struct socket *sock_get(int fd, uint8_t *flag) return sockets + ino->c_node.i_nlink; } -static int sock_pending(struct socket *s) +static int sock_pending(struct socket *l) { - /* TODO */ - return 0; + uint8_t d = l - sockets; + struct socket *s = sockets; + while (s < sockets + NSOCKET) { + if (s->s_state == SS_ACCEPTWAIT && s->s_data == d) + return s - sockets; + s++; + } + return -1; } static int sock_autobind(struct socket *s) -- 2.34.1