Re: struct sock change in kernel 2.6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux