00001
00023 #ifndef _XENO_NUCLEUS_MAP_H
00024 #define _XENO_NUCLEUS_MAP_H
00025
00029 #include <nucleus/types.h>
00030
00031 #define XNMAP_MAX_KEYS (BITS_PER_LONG * BITS_PER_LONG)
00032
00033 typedef struct xnmap {
00034
00035 int nkeys;
00036 int ukeys;
00037 int offset;
00038 unsigned long himask;
00039 unsigned long himap;
00040 #define __IDMAP_LONGS ((XNMAP_MAX_KEYS+BITS_PER_LONG-1)/BITS_PER_LONG)
00041 unsigned long lomap[__IDMAP_LONGS];
00042 #undef __IDMAP_LONGS
00043 void *objarray[1];
00044
00045 } xnmap_t;
00046
00047 xnmap_t *xnmap_create(int nkeys,
00048 int reserve,
00049 int offset);
00050
00051 void xnmap_delete(xnmap_t *map);
00052
00053 int xnmap_enter(xnmap_t *map,
00054 int key,
00055 void *objaddr);
00056
00057 int xnmap_remove(xnmap_t *map,
00058 int key);
00059
00060 void *xnmap_fetch(xnmap_t *map,
00061 int key);
00062
00065 #endif