]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blame - include/kmem.h
xfsprogs: Release v6.8.0
[thirdparty/xfsprogs-dev.git] / include / kmem.h
CommitLineData
959ef981 1// SPDX-License-Identifier: GPL-2.0
5e656dbb
BN
2/*
3 * Copyright (c) 2008 Silicon Graphics, Inc.
4 * All Rights Reserved.
5e656dbb
BN
5 */
6#ifndef __KMEM_H__
7#define __KMEM_H__
8
5e656dbb
BN
9#define KM_NOFS 0x0004u
10#define KM_MAYFAIL 0x0008u
11#define KM_LARGE 0x0010u
db8c0218 12#define KM_NOLOCKDEP 0x0020u
5e656dbb 13
5c35b317 14struct kmem_cache {
2e1394fc 15 int cache_unitsize; /* Size in bytes of cache unit */
7d10d094
DW
16 int allocated; /* debug: How many allocated? */
17 unsigned int align;
2e1394fc 18 const char *cache_name; /* tag name */
7d10d094 19 void (*ctor)(void *);
5c35b317 20};
5e656dbb 21
d7faa18a
CM
22typedef unsigned int __bitwise gfp_t;
23
24#define GFP_KERNEL ((__force gfp_t)0)
17e074de 25#define GFP_NOFS ((__force gfp_t)0)
d7faa18a 26#define __GFP_NOFAIL ((__force gfp_t)0)
5cb09fa6 27#define __GFP_NOLOCKDEP ((__force gfp_t)0)
d7faa18a 28
17e074de
CM
29#define __GFP_ZERO (__force gfp_t)1
30
5c35b317 31struct kmem_cache * kmem_cache_create(const char *name, unsigned int size,
7d10d094
DW
32 unsigned int align, unsigned int slab_flags,
33 void (*ctor)(void *));
34
5c35b317 35static inline struct kmem_cache *
2e1394fc 36kmem_cache_init(unsigned int size, const char *name)
7d10d094
DW
37{
38 return kmem_cache_create(name, size, 0, 0, NULL);
39}
40
5c35b317
DW
41extern void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
42extern void *kmem_cache_zalloc(struct kmem_cache *, gfp_t);
2e1394fc 43extern int kmem_cache_destroy(struct kmem_cache *);
5e656dbb 44
7d10d094 45static inline void
2e1394fc 46kmem_cache_free(struct kmem_cache *cache, void *ptr)
7d10d094 47{
2e1394fc 48 cache->allocated--;
5e656dbb
BN
49 free(ptr);
50}
51
52extern void *kmem_alloc(size_t, int);
5cb09fa6 53extern void *kvmalloc(size_t, gfp_t);
5e656dbb
BN
54extern void *kmem_zalloc(size_t, int);
55
f8149110 56static inline void
339c7931
BF
57kmem_free(const void *ptr) {
58 free((void *)ptr);
5e656dbb
BN
59}
60
8a21dbae 61extern void *krealloc(void *, size_t, int);
5e656dbb 62
7accbcd0
DW
63static inline void *kmalloc(size_t size, gfp_t flags)
64{
65 return kvmalloc(size, flags);
66}
67
68static inline void kfree(const void *ptr)
69{
70 return kmem_free(ptr);
71}
72
5e656dbb 73#endif