Subversion Repositories HelenOS-historic

Rev

Rev 68 | Rev 380 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 68 Rev 365
Line 35... Line 35...
35
struct link {
35
struct link {
36
    link_t *prev;
36
    link_t *prev;
37
    link_t *next;
37
    link_t *next;
38
};
38
};
39
 
39
 
-
 
40
static inline void link_initialize(link_t *link)
40
 
41
{
41
#define link_initialize(link) { \
-
 
42
    (link)->prev = NULL; \
42
    link->prev = NULL;
43
    (link)->next = NULL; \
43
    link->next = NULL;
44
}
44
}
45
 
45
 
46
#define list_initialize(head) { \
46
static inline void list_initialize(link_t *head)
-
 
47
{
47
    (head)->prev = (head); \
48
    head->prev = head;
48
    (head)->next = (head); \
49
    head->next = head;
49
}
50
}
50
 
51
 
51
#define list_prepend(link, head) { \
52
static inline void list_prepend(link_t *link, link_t *head)
-
 
53
{
52
    (link)->next = (head)->next; \
54
    link->next = head->next;
53
    (link)->prev = (head); \
55
    link->prev = head;
54
    (head)->next->prev = (link); \
56
    head->next->prev = link;
55
    (head)->next = (link); \
57
    head->next = link;
56
}
58
}
57
 
59
 
58
#define list_append(link, head) { \
60
static inline void list_append(link_t *link, link_t *head)
-
 
61
{
59
    (link)->prev = (head)->prev; \
62
    link->prev = head->prev;
60
    (link)->next = (head); \
63
    link->next = head;
61
    (head)->prev->next = (link); \
64
    head->prev->next = link;
62
    (head)->prev = (link); \
65
    head->prev = link;
63
}
66
}
64
 
67
 
65
#define list_remove(link) { \
68
static inline void list_remove(link_t *link)
-
 
69
{
66
    (link)->next->prev = (link)->prev; \
70
    link->next->prev = link->prev;
67
    (link)->prev->next = (link)->next; \
71
    link->prev->next = link->next;
68
    link_initialize(link); \
72
    link_initialize(link);
69
}
73
}
70
 
74
 
71
#define list_empty(head) (((head)->next == (head))?true:false)
75
static inline bool list_empty(link_t *head) { return head->next == head ? true : false; }
72
 
76
 
73
#define list_get_instance(link,type,member) (type *)(((__u8*)(link))-((__u8*)&(((type *)NULL)->member)))
77
#define list_get_instance(link,type,member) (type *)(((__u8*)(link))-((__u8*)&(((type *)NULL)->member)))
74
 
78
 
75
extern bool list_member(const link_t *link, const link_t *head);
79
extern bool list_member(const link_t *link, const link_t *head);
76
extern void list_concat(link_t *head1, link_t *head2);
80
extern void list_concat(link_t *head1, link_t *head2);