2 * \file ferret/lib/local_names/local_names.c
3 * \brief Manage local names for kernel objects (e.g., Fiasco's User
7 * \author Martin Pohlack <mp26@os.inf.tu-dresden.de>
10 * (c) 2006-2009 Technische Universität Dresden
11 * This file is part of TUD:OS and distributed under the terms of the
12 * GNU General Public License 2.
13 * Please see the COPYING-GPL-2 file for details.
17 #include <l4/l4rm/l4rm.h>
18 #include <l4/log/l4log.h>
19 #include <l4/sys/l4int.h>
20 #include <l4/util/bitops.h>
22 #include <l4/ferret/types.h>
23 #include <l4/ferret/local_names.h>
25 #define MAX_LOCAL_NAMES 256 // fixme: the kernel should export this constant
28 bitarray[(MAX_LOCAL_NAMES + L4_MWORD_BITS - 1) / L4_MWORD_BITS];
30 int ferret_local_names_reserve(void)
33 for (i = 1; i < MAX_LOCAL_NAMES; i++)
35 if (! l4util_bts(i % L4_MWORD_BITS, &(bitarray[i / L4_MWORD_BITS])))
40 if (i >= MAX_LOCAL_NAMES)
46 void ferret_local_names_dispose(int index)
48 if (index < MAX_LOCAL_NAMES)
50 l4util_clear_bit(index % L4_MWORD_BITS,
51 &(bitarray[index / L4_MWORD_BITS]));