Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
mempool.h
Go to the documentation of this file.
1
/*
2
* memory buffer pool support
3
*/
4
#ifndef _LINUX_MEMPOOL_H
5
#define _LINUX_MEMPOOL_H
6
7
#include <linux/wait.h>
8
9
struct
kmem_cache
;
10
11
typedef
void
* (
mempool_alloc_t
)(
gfp_t
gfp_mask
,
void
*pool_data);
12
typedef
void
(
mempool_free_t
)(
void
*
element
,
void
*pool_data);
13
14
typedef
struct
mempool_s
{
15
spinlock_t
lock
;
16
int
min_nr
;
/* nr of elements at *elements */
17
int
curr_nr
;
/* Current nr of elements at *elements */
18
void
**
elements
;
19
20
void
*
pool_data
;
21
mempool_alloc_t
*
alloc
;
22
mempool_free_t
*
free
;
23
wait_queue_head_t
wait
;
24
}
mempool_t
;
25
26
extern
mempool_t
*
mempool_create
(
int
min_nr,
mempool_alloc_t
*alloc_fn,
27
mempool_free_t
*free_fn,
void
*pool_data);
28
extern
mempool_t
*
mempool_create_node
(
int
min_nr,
mempool_alloc_t
*alloc_fn,
29
mempool_free_t
*free_fn,
void
*pool_data,
30
gfp_t
gfp_mask
,
int
nid);
31
32
extern
int
mempool_resize
(
mempool_t
*
pool
,
int
new_min_nr,
gfp_t
gfp_mask
);
33
extern
void
mempool_destroy
(
mempool_t
*
pool
);
34
extern
void
*
mempool_alloc
(
mempool_t
*
pool
,
gfp_t
gfp_mask
);
35
extern
void
mempool_free
(
void
*
element
,
mempool_t
*
pool
);
36
37
/*
38
* A mempool_alloc_t and mempool_free_t that get the memory from
39
* a slab that is passed in through pool_data.
40
*/
41
void
*
mempool_alloc_slab
(
gfp_t
gfp_mask
,
void
*pool_data);
42
void
mempool_free_slab
(
void
*
element
,
void
*pool_data);
43
static
inline
mempool_t
*
44
mempool_create_slab_pool(
int
min_nr,
struct
kmem_cache
*
kc
)
45
{
46
return
mempool_create
(min_nr,
mempool_alloc_slab
,
mempool_free_slab
,
47
(
void
*) kc);
48
}
49
50
/*
51
* a mempool_alloc_t and a mempool_free_t to kmalloc and kfree the
52
* amount of memory specified by pool_data
53
*/
54
void
*
mempool_kmalloc
(
gfp_t
gfp_mask
,
void
*pool_data);
55
void
mempool_kfree
(
void
*
element
,
void
*pool_data);
56
static
inline
mempool_t
*mempool_create_kmalloc_pool(
int
min_nr,
size_t
size
)
57
{
58
return
mempool_create
(min_nr,
mempool_kmalloc
,
mempool_kfree
,
59
(
void
*) size);
60
}
61
62
/*
63
* A mempool_alloc_t and mempool_free_t for a simple page allocator that
64
* allocates pages of the order specified by pool_data
65
*/
66
void
*
mempool_alloc_pages
(
gfp_t
gfp_mask
,
void
*pool_data);
67
void
mempool_free_pages
(
void
*
element
,
void
*pool_data);
68
static
inline
mempool_t
*mempool_create_page_pool(
int
min_nr,
int
order
)
69
{
70
return
mempool_create
(min_nr,
mempool_alloc_pages
,
mempool_free_pages
,
71
(
void
*)(
long
)order);
72
}
73
74
#endif
/* _LINUX_MEMPOOL_H */
Generated on Thu Jan 10 2013 14:51:50 for Linux Kernel by
1.8.2