diff options
Diffstat (limited to 'drivers/staging/zram/xvmalloc_int.h')
-rw-r--r-- | drivers/staging/zram/xvmalloc_int.h | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/drivers/staging/zram/xvmalloc_int.h b/drivers/staging/zram/xvmalloc_int.h deleted file mode 100644 index b5f1f7febcf..00000000000 --- a/drivers/staging/zram/xvmalloc_int.h +++ /dev/null | |||
@@ -1,95 +0,0 @@ | |||
1 | /* | ||
2 | * xvmalloc memory allocator | ||
3 | * | ||
4 | * Copyright (C) 2008, 2009, 2010 Nitin Gupta | ||
5 | * | ||
6 | * This code is released using a dual license strategy: BSD/GPL | ||
7 | * You can choose the licence that better fits your requirements. | ||
8 | * | ||
9 | * Released under the terms of 3-clause BSD License | ||
10 | * Released under the terms of GNU General Public License Version 2.0 | ||
11 | */ | ||
12 | |||
13 | #ifndef _XV_MALLOC_INT_H_ | ||
14 | #define _XV_MALLOC_INT_H_ | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/types.h> | ||
18 | |||
19 | /* User configurable params */ | ||
20 | |||
21 | /* Must be power of two */ | ||
22 | #ifdef CONFIG_64BIT | ||
23 | #define XV_ALIGN_SHIFT 3 | ||
24 | #else | ||
25 | #define XV_ALIGN_SHIFT 2 | ||
26 | #endif | ||
27 | #define XV_ALIGN (1 << XV_ALIGN_SHIFT) | ||
28 | #define XV_ALIGN_MASK (XV_ALIGN - 1) | ||
29 | |||
30 | /* This must be greater than sizeof(link_free) */ | ||
31 | #define XV_MIN_ALLOC_SIZE 32 | ||
32 | #define XV_MAX_ALLOC_SIZE (PAGE_SIZE - XV_ALIGN) | ||
33 | |||
34 | /* | ||
35 | * Free lists are separated by FL_DELTA bytes | ||
36 | * This value is 3 for 4k pages and 4 for 64k pages, for any | ||
37 | * other page size, a conservative (PAGE_SHIFT - 9) is used. | ||
38 | */ | ||
39 | #if PAGE_SHIFT == 16 | ||
40 | #define FL_DELTA_SHIFT 4 | ||
41 | #else | ||
42 | #define FL_DELTA_SHIFT (PAGE_SHIFT - 9) | ||
43 | #endif | ||
44 | #define FL_DELTA (1 << FL_DELTA_SHIFT) | ||
45 | #define FL_DELTA_MASK (FL_DELTA - 1) | ||
46 | #define NUM_FREE_LISTS ((XV_MAX_ALLOC_SIZE - XV_MIN_ALLOC_SIZE) \ | ||
47 | / FL_DELTA + 1) | ||
48 | |||
49 | #define MAX_FLI DIV_ROUND_UP(NUM_FREE_LISTS, BITS_PER_LONG) | ||
50 | |||
51 | /* End of user params */ | ||
52 | |||
53 | enum blockflags { | ||
54 | BLOCK_FREE, | ||
55 | PREV_FREE, | ||
56 | __NR_BLOCKFLAGS, | ||
57 | }; | ||
58 | |||
59 | #define FLAGS_MASK XV_ALIGN_MASK | ||
60 | #define PREV_MASK (~FLAGS_MASK) | ||
61 | |||
62 | struct freelist_entry { | ||
63 | struct page *page; | ||
64 | u16 offset; | ||
65 | u16 pad; | ||
66 | }; | ||
67 | |||
68 | struct link_free { | ||
69 | struct page *prev_page; | ||
70 | struct page *next_page; | ||
71 | u16 prev_offset; | ||
72 | u16 next_offset; | ||
73 | }; | ||
74 | |||
75 | struct block_header { | ||
76 | union { | ||
77 | /* This common header must be XV_ALIGN bytes */ | ||
78 | u8 common[XV_ALIGN]; | ||
79 | struct { | ||
80 | u16 size; | ||
81 | u16 prev; | ||
82 | }; | ||
83 | }; | ||
84 | struct link_free link; | ||
85 | }; | ||
86 | |||
87 | struct xv_pool { | ||
88 | ulong flbitmap; | ||
89 | ulong slbitmap[MAX_FLI]; | ||
90 | u64 total_pages; /* stats */ | ||
91 | struct freelist_entry freelist[NUM_FREE_LISTS]; | ||
92 | spinlock_t lock; | ||
93 | }; | ||
94 | |||
95 | #endif | ||