| /* Copyright 2012 Google Inc. All Rights Reserved. |
| */ |
| |
| #ifndef _HNVRAM_DLIST_H_ |
| #define _HNVRAM_DLIST_H_ |
| |
| typedef struct dlist_hdr { |
| struct dlist_hdr *next; |
| struct dlist_hdr *prev; |
| } dlist_hdr_t; |
| |
| #define DLIST_INIT(dlist) { &(dlist), &(dlist) } |
| |
| static inline void dlist_add(struct dlist_hdr *dlist, struct dlist_hdr *entry) |
| { |
| entry->next = dlist; |
| entry->prev = dlist->prev; |
| dlist->prev->next = entry; |
| dlist->prev = entry; |
| } |
| |
| static inline void dlist_del(struct dlist_hdr *entry) |
| { |
| entry->prev->next = entry->next; |
| entry->next->prev = entry->prev; |
| } |
| |
| #define DLIST_FOR_EACH(dlist, entry) \ |
| for (entry = (dlist)->next; entry != (dlist); entry = entry->next) |
| |
| #endif /* _HNVRAM_DLIST_H_ */ |