From mboxrd@z Thu Jan 1 00:00:00 1970 From: ali@internetdog.org (Ali Bahar) Date: Mon, 6 Jun 2011 13:35:58 +0800 Subject: kernel list data structure In-Reply-To: References: Message-ID: <20110606053558.GB15929@internetdog.org> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org 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; > };