| .. | .. |
|---|
| 13 | 13 | struct idset { |
|---|
| 14 | 14 | int num_ssid; |
|---|
| 15 | 15 | int num_id; |
|---|
| 16 | | - unsigned long bitmap[0]; |
|---|
| 16 | + unsigned long bitmap[]; |
|---|
| 17 | 17 | }; |
|---|
| 18 | 18 | |
|---|
| 19 | 19 | static inline unsigned long bitmap_size(int num_ssid, int num_id) |
|---|
| .. | .. |
|---|
| 57 | 57 | static inline int idset_contains(struct idset *set, int ssid, int id) |
|---|
| 58 | 58 | { |
|---|
| 59 | 59 | return test_bit(ssid * set->num_id + id, set->bitmap); |
|---|
| 60 | | -} |
|---|
| 61 | | - |
|---|
| 62 | | -static inline int idset_get_first(struct idset *set, int *ssid, int *id) |
|---|
| 63 | | -{ |
|---|
| 64 | | - int bitnum; |
|---|
| 65 | | - |
|---|
| 66 | | - bitnum = find_first_bit(set->bitmap, set->num_ssid * set->num_id); |
|---|
| 67 | | - if (bitnum >= set->num_ssid * set->num_id) |
|---|
| 68 | | - return 0; |
|---|
| 69 | | - *ssid = bitnum / set->num_id; |
|---|
| 70 | | - *id = bitnum % set->num_id; |
|---|
| 71 | | - return 1; |
|---|
| 72 | 60 | } |
|---|
| 73 | 61 | |
|---|
| 74 | 62 | struct idset *idset_sch_new(void) |
|---|