From mboxrd@z Thu Jan 1 00:00:00 1970 From: amirali.shambayati@gmail.com (Amirali Shambayati) Date: Mon, 6 Jun 2011 12:46:19 +0430 Subject: kernel list data structure In-Reply-To: References: <20110606053558.GB15929@internetdog.org> Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org I forgot to say that I use INIT_LIST_HEAD(&nd->writeQueue) and when I malloc a bundle, I use INIT_LIST_HEAD(&bun->reqsQueue) to make them as list heads. "nd" and "bun" are instantiations for noop_data and bundle. On Mon, Jun 6, 2011 at 11:01 AM, Amirali Shambayati < amirali.shambayati@gmail.com> wrote: > As I have read this pdf, I think I have assigned them right. I don't know > what's wrong? :-? > https://prof.hti.bfh.ch/myf1/adv-linux/courseNotes/*klist*-*intro*-1.3.* > pdf* > > > On Mon, Jun 6, 2011 at 10:52 AM, Amirali Shambayati < > amirali.shambayati at gmail.com> wrote: > >> As I have read the attached pdf, I think I have assigned them right. I >> don't know what's wrong? :-? >> >> >> On Mon, Jun 6, 2011 at 10:43 AM, Amirali Shambayati < >> amirali.shambayati at gmail.com> wrote: >> >>> Ali thanks for your valuable comments. Would you suggest me an >>> alternative method to implement the structure I explained? >>> >>> >>> On Mon, Jun 6, 2011 at 10:05 AM, Ali Bahar wrote: >>> >>>> >>>> All right, let's take another stab at this. >>>> >>>> > list. But as I debugged my code, it seems that my concept is wrong. >>>> Would >>>> > anyone guide me how to implement a two-dimensioned list, or introduce >>>> me a >>>> >>>> >>>> My interpretation of what you got is as follows, based on what you've >>>> said you'll be assigning each list_head to: >>>> >>>> struct noop_data { >>>> struct list_head readQueue; // You haven't explicitly stated which >>>> // LL this will be assigned to. >>>> struct list_head writeQueue;// The head of a LL of 'struct bundle' >>>> // nodes. >>>> struct bundle { >>>> int bundleNumber; >>>> int size; >>>> struct list_head bundlesQueue; // The LL of 'struct bundle' >>>> struct list_head reqsQueue; // The head of a LL of >>>> // 'struct request'? >>>> int filled[8]; >>>> } bun; >>>> unsigned int starved; >>>> }; >>>> >>>> Depending on how you're going to assign these, you may end up with >>>> spaghetti. As I indicated before, the nested inclusion of 'struct >>>> bundle' is likely wrong. >>>> >>>> later, >>>> ali >>>> >>>> >>>> > "noop_data" has a reference to start point of bundles list, called >>>> > "writeQueue" >>>> > "bundle" has a reference to start point of requests list, called >>>> > "reqsQueue". >>>> > "bundle" knows its related list using "bundlesQueue". >>>> > "request" knows its related list using "queuelist". (request struct is >>>> > already implemented in kernel) >>>> > >>>> > struct bundle { >>>> > int bundleNumber; >>>> > int size; >>>> > struct list_head bundlesQueue; >>>> > struct list_head reqsQueue; >>>> > int filled[8]; >>>> > }; >>>> > >>>> > struct noop_data { >>>> > struct list_head readQueue; >>>> > struct list_head writeQueue; >>>> > struct bundle bun; >>>> > unsigned int starved; >>>> > }; >>>> >>> >>> >>> >>> -- >>> Amirali Shambayati >>> Bachelor Student >>> Computer Engineering Department >>> Sharif University of Technology >>> Tehran, Iran >>> >>> >> >> >> -- >> Amirali Shambayati >> Bachelor Student >> Computer Engineering Department >> Sharif University of Technology >> Tehran, Iran >> >> > > > -- > Amirali Shambayati > Bachelor Student > Computer Engineering Department > Sharif University of Technology > Tehran, Iran > > -- Amirali Shambayati Bachelor Student Computer Engineering Department Sharif University of Technology Tehran, Iran -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110606/c619e7f4/attachment.html