Hi Bharath,all, On Thu, Dec 23, 2010 at 12:31 AM, Bharath H S <bhslinker@xxxxxxxxx> wrote: > > Hi Lijin liu, > There is sk_sleep function in include/net/sock.h line 1241 This might help. > - Bharath H S > > > > On Wed, Dec 22, 2010 at 11:47 AM, lijin liu <llj098@xxxxxxxxx> wrote: >> >> Hello everyone! >> >> I am trying to implement a simple tcp server in the kernel. I read the >> ktcpvs's source code, but it works under kernel 2.4. >> >> The struct sock changed in kernel 2.6, I have two questions about the struct: >> >> 1. Is sk_wq field in 2.6 equals to sk_sleep field in 2.4? >> 2. How can I access the tcp accept queue in kernel 2.6? (In kernel >> 2.4, we could use tp_pinfo.af_tcp.accept_queue, but it was removed in >> 2.6) >> >> >> PS: Should sk_receive_queue in the struct sock be used as >> tp_pinfo.af_tcp.accept_queue? >> >> Thanks a lot! >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > It seems that I found the answer. After reading the source code, comparing the codes of the two versions I got the answer: 1.We can use sk_wq->wait instead of sk_wait. 2.Use reqsk_queue_empty(struct request_sock_queue*) to check if there is a new connection to accept. (thsi method is in net/request_sock.h) we can use it like: struct inet_connection_sock *isock = inet_csk(socket->sk); if(reqsk_queue_empty(&isock->icsk_accept_queue)){ //sleep here } I test them in my code, works well. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies