~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to include/linux/btree-type.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno, Martin Michlmayr
  • Date: 2011-04-06 13:53:30 UTC
  • mfrom: (43.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20110406135330-wjufxhd0tvn3zx4z
Tags: 2.6.38-3
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
* appletalk: Fix bugs introduced when removing use of BKL
* ALSA: Fix yet another race in disconnection
* cciss: Fix lost command issue
* ath9k: Fix kernel panic in AR2427
* ses: Avoid kernel panic when lun 0 is not mapped
* PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.

[ Martin Michlmayr ]
* rtlwifi: Eliminate udelay calls with too large values (Closes: #620204)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#define __BTREE_TP(pfx, type, sfx)      pfx ## type ## sfx
 
2
#define _BTREE_TP(pfx, type, sfx)       __BTREE_TP(pfx, type, sfx)
 
3
#define BTREE_TP(pfx)                   _BTREE_TP(pfx, BTREE_TYPE_SUFFIX,)
 
4
#define BTREE_FN(name)                  BTREE_TP(btree_ ## name)
 
5
#define BTREE_TYPE_HEAD                 BTREE_TP(struct btree_head)
 
6
#define VISITOR_FN                      BTREE_TP(visitor)
 
7
#define VISITOR_FN_T                    _BTREE_TP(visitor, BTREE_TYPE_SUFFIX, _t)
 
8
 
 
9
BTREE_TYPE_HEAD {
 
10
        struct btree_head h;
 
11
};
 
12
 
 
13
static inline void BTREE_FN(init_mempool)(BTREE_TYPE_HEAD *head,
 
14
                                          mempool_t *mempool)
 
15
{
 
16
        btree_init_mempool(&head->h, mempool);
 
17
}
 
18
 
 
19
static inline int BTREE_FN(init)(BTREE_TYPE_HEAD *head)
 
20
{
 
21
        return btree_init(&head->h);
 
22
}
 
23
 
 
24
static inline void BTREE_FN(destroy)(BTREE_TYPE_HEAD *head)
 
25
{
 
26
        btree_destroy(&head->h);
 
27
}
 
28
 
 
29
static inline int BTREE_FN(merge)(BTREE_TYPE_HEAD *target,
 
30
                                  BTREE_TYPE_HEAD *victim,
 
31
                                  gfp_t gfp)
 
32
{
 
33
        return btree_merge(&target->h, &victim->h, BTREE_TYPE_GEO, gfp);
 
34
}
 
35
 
 
36
#if (BITS_PER_LONG > BTREE_TYPE_BITS)
 
37
static inline void *BTREE_FN(lookup)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
 
38
{
 
39
        unsigned long _key = key;
 
40
        return btree_lookup(&head->h, BTREE_TYPE_GEO, &_key);
 
41
}
 
42
 
 
43
static inline int BTREE_FN(insert)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
 
44
                                   void *val, gfp_t gfp)
 
45
{
 
46
        unsigned long _key = key;
 
47
        return btree_insert(&head->h, BTREE_TYPE_GEO, &_key, val, gfp);
 
48
}
 
49
 
 
50
static inline int BTREE_FN(update)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
 
51
                void *val)
 
52
{
 
53
        unsigned long _key = key;
 
54
        return btree_update(&head->h, BTREE_TYPE_GEO, &_key, val);
 
55
}
 
56
 
 
57
static inline void *BTREE_FN(remove)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
 
58
{
 
59
        unsigned long _key = key;
 
60
        return btree_remove(&head->h, BTREE_TYPE_GEO, &_key);
 
61
}
 
62
 
 
63
static inline void *BTREE_FN(last)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 
64
{
 
65
        unsigned long _key;
 
66
        void *val = btree_last(&head->h, BTREE_TYPE_GEO, &_key);
 
67
        if (val)
 
68
                *key = _key;
 
69
        return val;
 
70
}
 
71
 
 
72
static inline void *BTREE_FN(get_prev)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 
73
{
 
74
        unsigned long _key = *key;
 
75
        void *val = btree_get_prev(&head->h, BTREE_TYPE_GEO, &_key);
 
76
        if (val)
 
77
                *key = _key;
 
78
        return val;
 
79
}
 
80
#else
 
81
static inline void *BTREE_FN(lookup)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
 
82
{
 
83
        return btree_lookup(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key);
 
84
}
 
85
 
 
86
static inline int BTREE_FN(insert)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
 
87
                           void *val, gfp_t gfp)
 
88
{
 
89
        return btree_insert(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key,
 
90
                            val, gfp);
 
91
}
 
92
 
 
93
static inline int BTREE_FN(update)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key,
 
94
                void *val)
 
95
{
 
96
        return btree_update(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key, val);
 
97
}
 
98
 
 
99
static inline void *BTREE_FN(remove)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE key)
 
100
{
 
101
        return btree_remove(&head->h, BTREE_TYPE_GEO, (unsigned long *)&key);
 
102
}
 
103
 
 
104
static inline void *BTREE_FN(last)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 
105
{
 
106
        return btree_last(&head->h, BTREE_TYPE_GEO, (unsigned long *)key);
 
107
}
 
108
 
 
109
static inline void *BTREE_FN(get_prev)(BTREE_TYPE_HEAD *head, BTREE_KEYTYPE *key)
 
110
{
 
111
        return btree_get_prev(&head->h, BTREE_TYPE_GEO, (unsigned long *)key);
 
112
}
 
113
#endif
 
114
 
 
115
void VISITOR_FN(void *elem, unsigned long opaque, unsigned long *key,
 
116
                size_t index, void *__func);
 
117
 
 
118
typedef void (*VISITOR_FN_T)(void *elem, unsigned long opaque,
 
119
                             BTREE_KEYTYPE key, size_t index);
 
120
 
 
121
static inline size_t BTREE_FN(visitor)(BTREE_TYPE_HEAD *head,
 
122
                                       unsigned long opaque,
 
123
                                       VISITOR_FN_T func2)
 
124
{
 
125
        return btree_visitor(&head->h, BTREE_TYPE_GEO, opaque,
 
126
                             visitorl, func2);
 
127
}
 
128
 
 
129
static inline size_t BTREE_FN(grim_visitor)(BTREE_TYPE_HEAD *head,
 
130
                                            unsigned long opaque,
 
131
                                            VISITOR_FN_T func2)
 
132
{
 
133
        return btree_grim_visitor(&head->h, BTREE_TYPE_GEO, opaque,
 
134
                                  visitorl, func2);
 
135
}
 
136
 
 
137
#undef VISITOR_FN
 
138
#undef VISITOR_FN_T
 
139
#undef __BTREE_TP
 
140
#undef _BTREE_TP
 
141
#undef BTREE_TP
 
142
#undef BTREE_FN
 
143
#undef BTREE_TYPE_HEAD
 
144
#undef BTREE_TYPE_SUFFIX
 
145
#undef BTREE_TYPE_GEO
 
146
#undef BTREE_KEYTYPE
 
147
#undef BTREE_TYPE_BITS