kernel list data structure

Ali Bahar ali at internetdog.org
Mon Jun 6 01:35:58 EDT 2011


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;
> };



More information about the Kernelnewbies mailing list