~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/zsmalloc.h

Version: ~ [ linux-5.13-rc1 ] ~ [ linux-5.12.2 ] ~ [ linux-5.11.19 ] ~ [ linux-5.10.35 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.117 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.190 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.232 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.268 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.268 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp