Commit | Line | Data |
---|---|---|
61989a80 NG |
1 | /* |
2 | * zsmalloc memory allocator | |
3 | * | |
4 | * Copyright (C) 2011 Nitin Gupta | |
5 | * | |
6 | * This code is released using a dual license strategy: BSD/GPL | |
7 | * You can choose the license 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 _ZS_MALLOC_H_ | |
14 | #define _ZS_MALLOC_H_ | |
15 | ||
16 | #include <linux/types.h> | |
17 | ||
b7418510 SJ |
18 | /* |
19 | * zsmalloc mapping modes | |
20 | * | |
21 | * NOTE: These only make a difference when a mapped object spans pages | |
396b7fd6 | 22 | */ |
b7418510 SJ |
23 | enum zs_mapmode { |
24 | ZS_MM_RW, /* normal read-write mapping */ | |
25 | ZS_MM_RO, /* read-only (no copy-out at unmap time) */ | |
26 | ZS_MM_WO /* write-only (no copy-in at map time) */ | |
27 | }; | |
28 | ||
61989a80 NG |
29 | struct zs_pool; |
30 | ||
0d145a50 | 31 | struct zs_pool *zs_create_pool(gfp_t flags); |
61989a80 NG |
32 | void zs_destroy_pool(struct zs_pool *pool); |
33 | ||
c2344348 MK |
34 | unsigned long zs_malloc(struct zs_pool *pool, size_t size); |
35 | void zs_free(struct zs_pool *pool, unsigned long obj); | |
61989a80 | 36 | |
b7418510 SJ |
37 | void *zs_map_object(struct zs_pool *pool, unsigned long handle, |
38 | enum zs_mapmode mm); | |
c2344348 | 39 | void zs_unmap_object(struct zs_pool *pool, unsigned long handle); |
61989a80 NG |
40 | |
41 | u64 zs_get_total_size_bytes(struct zs_pool *pool); | |
42 | ||
43 | #endif |