12
12
*
13
13
* Author : Stephen Smalley, <[email protected] >
14
14
*/
15
+
15
16
#ifndef _SS_EBITMAP_H_
16
17
#define _SS_EBITMAP_H_
17
18
18
19
#include <net/netlabel.h>
19
20
20
21
#ifdef CONFIG_64BIT
21
- #define EBITMAP_NODE_SIZE 64
22
+ #define EBITMAP_NODE_SIZE 64
22
23
#else
23
- #define EBITMAP_NODE_SIZE 32
24
+ #define EBITMAP_NODE_SIZE 32
24
25
#endif
25
26
26
- #define EBITMAP_UNIT_NUMS ((EBITMAP_NODE_SIZE-sizeof(void *)-sizeof(u32))\
27
- / sizeof(unsigned long))
28
- #define EBITMAP_UNIT_SIZE BITS_PER_LONG
29
- #define EBITMAP_SIZE (EBITMAP_UNIT_NUMS * EBITMAP_UNIT_SIZE)
30
- #define EBITMAP_BIT 1ULL
31
- #define EBITMAP_SHIFT_UNIT_SIZE (x ) \
27
+ #define EBITMAP_UNIT_NUMS \
28
+ ((EBITMAP_NODE_SIZE - sizeof(void *) - sizeof(u32)) / \
29
+ sizeof(unsigned long))
30
+ #define EBITMAP_UNIT_SIZE BITS_PER_LONG
31
+ #define EBITMAP_SIZE (EBITMAP_UNIT_NUMS * EBITMAP_UNIT_SIZE)
32
+ #define EBITMAP_BIT 1ULL
33
+ #define EBITMAP_SHIFT_UNIT_SIZE (x ) \
32
34
(((x) >> EBITMAP_UNIT_SIZE / 2) >> EBITMAP_UNIT_SIZE / 2)
33
35
34
36
struct ebitmap_node {
@@ -38,8 +40,8 @@ struct ebitmap_node {
38
40
};
39
41
40
42
struct ebitmap {
41
- struct ebitmap_node * node ; /* first node in the bitmap */
42
- u32 highbit ; /* highest position in the total bitmap */
43
+ struct ebitmap_node * node ; /* first node in the bitmap */
44
+ u32 highbit ; /* highest position in the total bitmap */
43
45
};
44
46
45
47
#define ebitmap_length (e ) ((e)->highbit)
@@ -80,9 +82,9 @@ static inline unsigned int ebitmap_next_positive(const struct ebitmap *e,
80
82
return ebitmap_length (e );
81
83
}
82
84
83
- #define EBITMAP_NODE_INDEX (node , bit ) \
85
+ #define EBITMAP_NODE_INDEX (node , bit ) \
84
86
(((bit) - (node)->startbit) / EBITMAP_UNIT_SIZE)
85
- #define EBITMAP_NODE_OFFSET (node , bit ) \
87
+ #define EBITMAP_NODE_OFFSET (node , bit ) \
86
88
(((bit) - (node)->startbit) % EBITMAP_UNIT_SIZE)
87
89
88
90
static inline int ebitmap_node_get_bit (const struct ebitmap_node * n ,
@@ -117,15 +119,17 @@ static inline void ebitmap_node_clr_bit(struct ebitmap_node *n,
117
119
n -> maps [index ] &= ~(EBITMAP_BIT << ofs );
118
120
}
119
121
120
- #define ebitmap_for_each_positive_bit (e , n , bit ) \
121
- for ((bit) = ebitmap_start_positive(e, &(n)); \
122
- (bit) < ebitmap_length(e); \
123
- (bit) = ebitmap_next_positive(e, &(n), bit)) \
122
+ #define ebitmap_for_each_positive_bit (e , n , bit ) \
123
+ for ((bit) = ebitmap_start_positive(e, &(n)); \
124
+ (bit) < ebitmap_length(e); \
125
+ (bit) = ebitmap_next_positive(e, &(n), bit))
124
126
125
127
int ebitmap_cmp (const struct ebitmap * e1 , const struct ebitmap * e2 );
126
128
int ebitmap_cpy (struct ebitmap * dst , const struct ebitmap * src );
127
- int ebitmap_and (struct ebitmap * dst , const struct ebitmap * e1 , const struct ebitmap * e2 );
128
- int ebitmap_contains (const struct ebitmap * e1 , const struct ebitmap * e2 , u32 last_e2bit );
129
+ int ebitmap_and (struct ebitmap * dst , const struct ebitmap * e1 ,
130
+ const struct ebitmap * e2 );
131
+ int ebitmap_contains (const struct ebitmap * e1 , const struct ebitmap * e2 ,
132
+ u32 last_e2bit );
129
133
int ebitmap_get_bit (const struct ebitmap * e , unsigned long bit );
130
134
int ebitmap_set_bit (struct ebitmap * e , unsigned long bit , int value );
131
135
void ebitmap_destroy (struct ebitmap * e );
@@ -151,4 +155,4 @@ static inline int ebitmap_netlbl_import(struct ebitmap *ebmap,
151
155
}
152
156
#endif
153
157
154
- #endif /* _SS_EBITMAP_H_ */
158
+ #endif /* _SS_EBITMAP_H_ */
0 commit comments