Use of list_head struct

Robert P. J. Day rpjday at crashcourse.ca
Mon Jun 20 06:53:33 EDT 2016


On Mon, 20 Jun 2016, Bogdan PRICOP wrote:

> Bogdan PRICOP
> ----------------------------------------
> Mobile: +353 86 075 3349
> E-mail: pricopb at gmail.com
> ----------------------------------------
>
> On 17 June 2016 at 11:35, Pranay Srivastava <pranjas at gmail.com> wrote:
> >
> > On Fri, Jun 17, 2016 at 3:41 PM, Martin Houry <martinhoury at gmail.com> 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_head        tasks[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
========================================================================




More information about the Kernelnewbies mailing list