Re: Use of list_head struct
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
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
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