Re: struct sock change in kernel 2.6
Hi Bharath,all, On Thu, Dec 23, 2010 at 12:31 AM, Bharath H S bhslin...@gmail.com 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 llj...@gmail.com 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@kernelnewbies.org 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@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: struct sock change in kernel 2.6
On Thu, Dec 23, 2010 at 07:18, lijin liu llj...@gmail.com wrote: 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 } Thanks for sharing :) I believe you're intention is porting that code to latest kernel version, right? Then, i humbly suggest that you contribute the porting back to the original project. Who knows, that way many people will get the advantage and indirectly you got the benefit too: you become popular :) -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
struct sock change in kernel 2.6
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@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies