5
5
#ifndef _LINUX_MEMPOOL_H
6
6
#define _LINUX_MEMPOOL_H
7
7
8
+ #include <linux/sched.h>
9
+ #include <linux/alloc_tag.h>
8
10
#include <linux/wait.h>
9
11
#include <linux/compiler.h>
10
12
@@ -39,18 +41,32 @@ void mempool_exit(mempool_t *pool);
39
41
int mempool_init_node (mempool_t * pool , int min_nr , mempool_alloc_t * alloc_fn ,
40
42
mempool_free_t * free_fn , void * pool_data ,
41
43
gfp_t gfp_mask , int node_id );
42
- int mempool_init (mempool_t * pool , int min_nr , mempool_alloc_t * alloc_fn ,
44
+
45
+ int mempool_init_noprof (mempool_t * pool , int min_nr , mempool_alloc_t * alloc_fn ,
43
46
mempool_free_t * free_fn , void * pool_data );
47
+ #define mempool_init (...) \
48
+ alloc_hooks(mempool_init_noprof(__VA_ARGS__))
44
49
45
50
extern mempool_t * mempool_create (int min_nr , mempool_alloc_t * alloc_fn ,
46
51
mempool_free_t * free_fn , void * pool_data );
47
- extern mempool_t * mempool_create_node (int min_nr , mempool_alloc_t * alloc_fn ,
52
+
53
+ extern mempool_t * mempool_create_node_noprof (int min_nr , mempool_alloc_t * alloc_fn ,
48
54
mempool_free_t * free_fn , void * pool_data ,
49
55
gfp_t gfp_mask , int nid );
56
+ #define mempool_create_node (...) \
57
+ alloc_hooks(mempool_create_node_noprof(__VA_ARGS__))
58
+
59
+ #define mempool_create (_min_nr , _alloc_fn , _free_fn , _pool_data ) \
60
+ mempool_create_node(_min_nr, _alloc_fn, _free_fn, _pool_data, \
61
+ GFP_KERNEL, NUMA_NO_NODE)
50
62
51
63
extern int mempool_resize (mempool_t * pool , int new_min_nr );
52
64
extern void mempool_destroy (mempool_t * pool );
53
- extern void * mempool_alloc (mempool_t * pool , gfp_t gfp_mask ) __malloc ;
65
+
66
+ extern void * mempool_alloc_noprof (mempool_t * pool , gfp_t gfp_mask ) __malloc ;
67
+ #define mempool_alloc (...) \
68
+ alloc_hooks(mempool_alloc_noprof(__VA_ARGS__))
69
+
54
70
extern void * mempool_alloc_preallocated (mempool_t * pool ) __malloc ;
55
71
extern void mempool_free (void * element , mempool_t * pool );
56
72
@@ -62,19 +78,10 @@ extern void mempool_free(void *element, mempool_t *pool);
62
78
void * mempool_alloc_slab (gfp_t gfp_mask , void * pool_data );
63
79
void mempool_free_slab (void * element , void * pool_data );
64
80
65
- static inline int
66
- mempool_init_slab_pool (mempool_t * pool , int min_nr , struct kmem_cache * kc )
67
- {
68
- return mempool_init (pool , min_nr , mempool_alloc_slab ,
69
- mempool_free_slab , (void * ) kc );
70
- }
71
-
72
- static inline mempool_t *
73
- mempool_create_slab_pool (int min_nr , struct kmem_cache * kc )
74
- {
75
- return mempool_create (min_nr , mempool_alloc_slab , mempool_free_slab ,
76
- (void * ) kc );
77
- }
81
+ #define mempool_init_slab_pool (_pool , _min_nr , _kc ) \
82
+ mempool_init(_pool, (_min_nr), mempool_alloc_slab, mempool_free_slab, (void *)(_kc))
83
+ #define mempool_create_slab_pool (_min_nr , _kc ) \
84
+ mempool_create((_min_nr), mempool_alloc_slab, mempool_free_slab, (void *)(_kc))
78
85
79
86
/*
80
87
* a mempool_alloc_t and a mempool_free_t to kmalloc and kfree the
@@ -83,17 +90,12 @@ mempool_create_slab_pool(int min_nr, struct kmem_cache *kc)
83
90
void * mempool_kmalloc (gfp_t gfp_mask , void * pool_data );
84
91
void mempool_kfree (void * element , void * pool_data );
85
92
86
- static inline int mempool_init_kmalloc_pool (mempool_t * pool , int min_nr , size_t size )
87
- {
88
- return mempool_init (pool , min_nr , mempool_kmalloc ,
89
- mempool_kfree , (void * ) size );
90
- }
91
-
92
- static inline mempool_t * mempool_create_kmalloc_pool (int min_nr , size_t size )
93
- {
94
- return mempool_create (min_nr , mempool_kmalloc , mempool_kfree ,
95
- (void * ) size );
96
- }
93
+ #define mempool_init_kmalloc_pool (_pool , _min_nr , _size ) \
94
+ mempool_init(_pool, (_min_nr), mempool_kmalloc, mempool_kfree, \
95
+ (void *)(unsigned long)(_size))
96
+ #define mempool_create_kmalloc_pool (_min_nr , _size ) \
97
+ mempool_create((_min_nr), mempool_kmalloc, mempool_kfree, \
98
+ (void *)(unsigned long)(_size))
97
99
98
100
void * mempool_kvmalloc (gfp_t gfp_mask , void * pool_data );
99
101
void mempool_kvfree (void * element , void * pool_data );
@@ -115,16 +117,11 @@ static inline mempool_t *mempool_create_kvmalloc_pool(int min_nr, size_t size)
115
117
void * mempool_alloc_pages (gfp_t gfp_mask , void * pool_data );
116
118
void mempool_free_pages (void * element , void * pool_data );
117
119
118
- static inline int mempool_init_page_pool (mempool_t * pool , int min_nr , int order )
119
- {
120
- return mempool_init (pool , min_nr , mempool_alloc_pages ,
121
- mempool_free_pages , (void * )(long )order );
122
- }
123
-
124
- static inline mempool_t * mempool_create_page_pool (int min_nr , int order )
125
- {
126
- return mempool_create (min_nr , mempool_alloc_pages , mempool_free_pages ,
127
- (void * )(long )order );
128
- }
120
+ #define mempool_init_page_pool (_pool , _min_nr , _order ) \
121
+ mempool_init(_pool, (_min_nr), mempool_alloc_pages, \
122
+ mempool_free_pages, (void *)(long)(_order))
123
+ #define mempool_create_page_pool (_min_nr , _order ) \
124
+ mempool_create((_min_nr), mempool_alloc_pages, \
125
+ mempool_free_pages, (void *)(long)(_order))
129
126
130
127
#endif /* _LINUX_MEMPOOL_H */
0 commit comments