mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
0a835c4f09
The IDR is very similar to the radix tree. It has some functionality that the radix tree did not have (alloc next free, cyclic allocation, a callback-based for_each, destroy tree), which is readily implementable on top of the radix tree. A few small changes were needed in order to use a tag to represent nodes with free space below them. More extensive changes were needed to support storing NULL as a valid entry in an IDR. Plain radix trees still interpret NULL as a not-present entry. The IDA is reimplemented as a client of the newly enhanced radix tree. As in the current implementation, it uses a bitmap at the last level of the tree. Signed-off-by: Matthew Wilcox <willy@infradead.org> Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Tested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
31 lines
754 B
C
31 lines
754 B
C
#ifndef _GFP_H
|
|
#define _GFP_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define __GFP_BITS_SHIFT 26
|
|
#define __GFP_BITS_MASK ((gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
|
|
|
|
#define __GFP_HIGH 0x20u
|
|
#define __GFP_IO 0x40u
|
|
#define __GFP_FS 0x80u
|
|
#define __GFP_NOWARN 0x200u
|
|
#define __GFP_ATOMIC 0x80000u
|
|
#define __GFP_ACCOUNT 0x100000u
|
|
#define __GFP_DIRECT_RECLAIM 0x400000u
|
|
#define __GFP_KSWAPD_RECLAIM 0x2000000u
|
|
|
|
#define __GFP_RECLAIM (__GFP_DIRECT_RECLAIM|__GFP_KSWAPD_RECLAIM)
|
|
|
|
#define GFP_ATOMIC (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
|
|
#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
|
|
#define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM)
|
|
|
|
|
|
static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
|
|
{
|
|
return !!(gfp_flags & __GFP_DIRECT_RECLAIM);
|
|
}
|
|
|
|
#endif
|