From 7996a3d79d55b7f879dfd62e202bbfe2963718d3 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 27 Jul 2013 22:15:01 +0000 Subject: really properly move files --- libdde-linux26/contrib/include/linux/idr.h | 146 +++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 libdde-linux26/contrib/include/linux/idr.h (limited to 'libdde-linux26/contrib/include/linux/idr.h') diff --git a/libdde-linux26/contrib/include/linux/idr.h b/libdde-linux26/contrib/include/linux/idr.h new file mode 100644 index 00000000..dd846df8 --- /dev/null +++ b/libdde-linux26/contrib/include/linux/idr.h @@ -0,0 +1,146 @@ +/* + * include/linux/idr.h + * + * 2002-10-18 written by Jim Houston jim.houston@ccur.com + * Copyright (C) 2002 by Concurrent Computer Corporation + * Distributed under the GNU GPL license version 2. + * + * Small id to pointer translation service avoiding fixed sized + * tables. + */ + +#ifndef __IDR_H__ +#define __IDR_H__ + +#include +#include +#include +#include + +#if BITS_PER_LONG == 32 +# define IDR_BITS 5 +# define IDR_FULL 0xfffffffful +/* We can only use two of the bits in the top level because there is + only one possible bit in the top level (5 bits * 7 levels = 35 + bits, but you only use 31 bits in the id). */ +# define TOP_LEVEL_FULL (IDR_FULL >> 30) +#elif BITS_PER_LONG == 64 +# define IDR_BITS 6 +# define IDR_FULL 0xfffffffffffffffful +/* We can only use two of the bits in the top level because there is + only one possible bit in the top level (6 bits * 6 levels = 36 + bits, but you only use 31 bits in the id). */ +# define TOP_LEVEL_FULL (IDR_FULL >> 62) +#else +# error "BITS_PER_LONG is not 32 or 64" +#endif + +#define IDR_SIZE (1 << IDR_BITS) +#define IDR_MASK ((1 << IDR_BITS)-1) + +#define MAX_ID_SHIFT (sizeof(int)*8 - 1) +#define MAX_ID_BIT (1U << MAX_ID_SHIFT) +#define MAX_ID_MASK (MAX_ID_BIT - 1) + +/* Leave the possibility of an incomplete final layer */ +#define MAX_LEVEL (MAX_ID_SHIFT + IDR_BITS - 1) / IDR_BITS + +/* Number of id_layer structs to leave in free list */ +#define IDR_FREE_MAX MAX_LEVEL + MAX_LEVEL + +struct idr_layer { + unsigned long bitmap; /* A zero bit means "space here" */ + struct idr_layer *ary[1<