mirror of git://git.sysmocom.de/ofono
idmap: add api for finding a certain id in map
This commit is contained in:
parent
9173d7e2e4
commit
561a9f94a2
12
src/idmap.c
12
src/idmap.c
|
@ -166,6 +166,18 @@ void idmap_take(struct idmap *idmap, unsigned int id)
|
|||
idmap->bits[offset] |= 1UL << (bit % BITS_PER_LONG);
|
||||
}
|
||||
|
||||
int idmap_find(struct idmap *idmap, unsigned int id)
|
||||
{
|
||||
unsigned int bit = id - idmap->min;
|
||||
unsigned int offset;
|
||||
|
||||
if (bit >= idmap->size)
|
||||
return 0;
|
||||
|
||||
offset = bit / BITS_PER_LONG;
|
||||
return (idmap->bits[offset] & (1UL << (bit % BITS_PER_LONG))) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate the next bit skipping the ids up to and including last. If there
|
||||
* is no free ids until the max id is encountered, the counter is wrapped back
|
||||
|
|
|
@ -25,6 +25,7 @@ struct idmap *idmap_new(unsigned int size);
|
|||
void idmap_free(struct idmap *idmap);
|
||||
void idmap_put(struct idmap *idmap, unsigned int id);
|
||||
void idmap_take(struct idmap *idmap, unsigned int id);
|
||||
int idmap_find(struct idmap *idmap, unsigned int id);
|
||||
unsigned int idmap_alloc(struct idmap *idmap);
|
||||
unsigned int idmap_alloc_next(struct idmap *idmap, unsigned int last);
|
||||
struct idmap *idmap_new_from_range(unsigned int min, unsigned int max);
|
||||
|
|
Loading…
Reference in New Issue