mirror of
https://github.com/drasko/codezero.git
synced 2026-01-13 11:23:16 +01:00
A 16-bit device number or id further distinguishes a device on the system in addition to the device type. This is meant to be used for the very first identification of the device for further probing. Any further info is available by userspace mapping and probing.
32 lines
817 B
C
32 lines
817 B
C
#ifndef __IDPOOL_H__
|
|
#define __IDPOOL_H__
|
|
|
|
#include <l4lib/bit.h>
|
|
#include <string.h>
|
|
#include <l4/macros.h>
|
|
#include INC_GLUE(memory.h)
|
|
|
|
struct id_pool {
|
|
int nwords;
|
|
int bitlimit;
|
|
u32 bitmap[];
|
|
};
|
|
|
|
/* Copy one id pool to another by calculating its size */
|
|
static inline void id_pool_copy(struct id_pool *to, struct id_pool *from, int totalbits)
|
|
{
|
|
int nwords = BITWISE_GETWORD(totalbits);
|
|
|
|
memcpy(to, from, nwords * SZ_WORD + sizeof(struct id_pool));
|
|
}
|
|
|
|
struct id_pool *id_pool_new_init(int mapsize);
|
|
int id_new(struct id_pool *pool);
|
|
int id_del(struct id_pool *pool, int id);
|
|
int id_get(struct id_pool *pool, int id);
|
|
int id_is_empty(struct id_pool *pool);
|
|
int ids_new_contiguous(struct id_pool *pool, int numids);
|
|
int ids_del_contiguous(struct id_pool *pool, int first, int numids);
|
|
|
|
#endif /* __IDPOOL_H__ */
|