Blame view
include/linux/zsmalloc.h
1.64 KB
61989a80f staging: zsmalloc... |
1 2 3 4 |
/* * zsmalloc memory allocator * * Copyright (C) 2011 Nitin Gupta |
31fc00bb7 zsmalloc: add cop... |
5 |
* Copyright (C) 2012, 2013 Minchan Kim |
61989a80f staging: zsmalloc... |
6 7 8 9 10 11 12 13 14 15 16 17 |
* * This code is released using a dual license strategy: BSD/GPL * You can choose the license that better fits your requirements. * * Released under the terms of 3-clause BSD License * Released under the terms of GNU General Public License Version 2.0 */ #ifndef _ZS_MALLOC_H_ #define _ZS_MALLOC_H_ #include <linux/types.h> |
b74185108 staging: zsmalloc... |
18 19 20 |
/* * zsmalloc mapping modes * |
c3e3e88ad zsmalloc: add mor... |
21 22 |
* NOTE: These only make a difference when a mapped object spans pages. * They also have no effect when PGTABLE_MAPPING is selected. |
396b7fd6f staging/zsmalloc:... |
23 |
*/ |
b74185108 staging: zsmalloc... |
24 25 26 27 |
enum zs_mapmode { ZS_MM_RW, /* normal read-write mapping */ ZS_MM_RO, /* read-only (no copy-out at unmap time) */ ZS_MM_WO /* write-only (no copy-in at map time) */ |
c3e3e88ad zsmalloc: add mor... |
28 29 30 31 32 33 |
/* * NOTE: ZS_MM_WO should only be used for initializing new * (uninitialized) allocations. Partial writes to already * initialized allocations should use ZS_MM_RW to preserve the * existing data. */ |
b74185108 staging: zsmalloc... |
34 |
}; |
7d3f39382 zsmalloc/zram: in... |
35 |
struct zs_pool_stats { |
860c707dc zsmalloc: account... |
36 37 |
/* How many pages were migrated (freed) */ unsigned long pages_compacted; |
7d3f39382 zsmalloc/zram: in... |
38 |
}; |
61989a80f staging: zsmalloc... |
39 |
struct zs_pool; |
d0d8da2dc zsmalloc: require... |
40 |
struct zs_pool *zs_create_pool(const char *name); |
61989a80f staging: zsmalloc... |
41 |
void zs_destroy_pool(struct zs_pool *pool); |
d0d8da2dc zsmalloc: require... |
42 |
unsigned long zs_malloc(struct zs_pool *pool, size_t size, gfp_t flags); |
c23443483 staging: zsmalloc... |
43 |
void zs_free(struct zs_pool *pool, unsigned long obj); |
61989a80f staging: zsmalloc... |
44 |
|
b74185108 staging: zsmalloc... |
45 46 |
void *zs_map_object(struct zs_pool *pool, unsigned long handle, enum zs_mapmode mm); |
c23443483 staging: zsmalloc... |
47 |
void zs_unmap_object(struct zs_pool *pool, unsigned long handle); |
61989a80f staging: zsmalloc... |
48 |
|
722cdc172 zsmalloc: change ... |
49 |
unsigned long zs_get_total_pages(struct zs_pool *pool); |
312fcae22 zsmalloc: support... |
50 |
unsigned long zs_compact(struct zs_pool *pool); |
61989a80f staging: zsmalloc... |
51 |
|
7d3f39382 zsmalloc/zram: in... |
52 |
void zs_pool_stats(struct zs_pool *pool, struct zs_pool_stats *stats); |
61989a80f staging: zsmalloc... |
53 |
#endif |