Re: Use of list_head struct

2016-06-20 Thread Robert P. J. Day
On Mon, 20 Jun 2016, Bogdan PRICOP wrote:

> Bogdan PRICOP
> 
> Mobile: +353 86 075 3349
> E-mail: pric...@gmail.com
> 
>
> On 17 June 2016 at 11:35, Pranay Srivastava  wrote:
> >
> > On Fri, Jun 17, 2016 at 3:41 PM, Martin Houry  wrote:
> > > Hello mailing list!
> > > I've read some code in the NFS4.1 client. I have trouble to access
> > > variables in a list_head.
> > >
> > > So I have :
> > > (include/linux/sunrpc/xprt.h line 168)
> > > struct rpc_xprt{
> > > .
> > > .
> > >
> > > struct rpc_wait_queue pending; /* requests in flight */
> > > .
> > > .
> > > }
> > >
> > > ==>
> > >
> > > struct rpc_wait_queue {
> > > .
> > > struct list_headtasks[RPC_NR_PRIORITY]; /* task queue for
> > > each priority level */
> > > .
> > > }
> > >
> > > The struct "list_head" is a classical  linked list. But How do I know
> > > the type of the struct in this list?
> > > I can maybe guess the struct in it :
> > >
> > > struct rpc_task {}
> > >
> > > But how can I be certain that "struct list_head tasks" contains some
> > > "struct rpc_task"?
> >
> > some magic value perhaps?
> >
> > >
> > > I'm new here, thank you for your help!
> > > Martin
> > >
>
> Hi Martin,
>
> I think the main idea behind Linux kernel implementation of the linked
> list (struct list_head) is to work with any kind of items which need
> to be linked.
>
> Please have a look at the below links which explain the internals of
> Linux kernel list and its usage:
> https://isis.poly.edu/kulesh/stuff/src/klist/
> http://www.makelinux.net/ldd3/chp-11-sect-5

  i wrote a page on that way back here:

http://crashcourse.ca/introduction-linux-kernel-programming/intermission-lets-talk-about-linked-lists-and-containerof-free

as part of a kernel programming course that i *really* need to get
back to someday and update. *sigh*.

rday


-- 


Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca

Twitter:   http://twitter.com/rpjday
LinkedIn:   http://ca.linkedin.com/in/rpjday



___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: Use of list_head struct

2016-06-20 Thread Bogdan PRICOP
Bogdan PRICOP

Mobile: +353 86 075 3349
E-mail: pric...@gmail.com


On 17 June 2016 at 11:35, Pranay Srivastava  wrote:
>
> On Fri, Jun 17, 2016 at 3:41 PM, Martin Houry  wrote:
> > Hello mailing list!
> > I've read some code in the NFS4.1 client. I have trouble to access
> > variables in a list_head.
> >
> > So I have :
> > (include/linux/sunrpc/xprt.h line 168)
> > struct rpc_xprt{
> > .
> > .
> >
> > struct rpc_wait_queue pending; /* requests in flight */
> > .
> > .
> > }
> >
> > ==>
> >
> > struct rpc_wait_queue {
> > .
> > struct list_headtasks[RPC_NR_PRIORITY]; /* task queue for
> > each priority level */
> > .
> > }
> >
> > The struct "list_head" is a classical  linked list. But How do I know
> > the type of the struct in this list?
> > I can maybe guess the struct in it :
> >
> > struct rpc_task {}
> >
> > But how can I be certain that "struct list_head tasks" contains some
> > "struct rpc_task"?
>
> some magic value perhaps?
>
> >
> > I'm new here, thank you for your help!
> > Martin
> >

Hi Martin,

I think the main idea behind Linux kernel implementation of the linked
list (struct list_head) is to work with any kind of items which need
to be linked.

Please have a look at the below links which explain the internals of
Linux kernel list and its usage:
https://isis.poly.edu/kulesh/stuff/src/klist/
http://www.makelinux.net/ldd3/chp-11-sect-5

Thanks,
Bogdan

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: Use of list_head struct

2016-06-17 Thread Pranay Srivastava
On Fri, Jun 17, 2016 at 3:41 PM, Martin Houry  wrote:
> Hello mailing list!
> I've read some code in the NFS4.1 client. I have trouble to access
> variables in a list_head.
>
> So I have :
> (include/linux/sunrpc/xprt.h line 168)
> struct rpc_xprt{
> .
> .
>
> struct rpc_wait_queue pending; /* requests in flight */
> .
> .
> }
>
> ==>
>
> struct rpc_wait_queue {
> .
> struct list_headtasks[RPC_NR_PRIORITY]; /* task queue for
> each priority level */
> .
> }
>
> The struct "list_head" is a classical  linked list. But How do I know
> the type of the struct in this list?
> I can maybe guess the struct in it :
>
> struct rpc_task {}
>
> But how can I be certain that "struct list_head tasks" contains some
> "struct rpc_task"?

some magic value perhaps?

>
> I'm new here, thank you for your help!
> Martin
>
> ___
> Kernelnewbies mailing list
> Kernelnewbies@kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



-- 
---P.K.S

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies