Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/include/linux/gfp.h
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | |||||
#define __GFP_HIGHMEM 0 | #define __GFP_HIGHMEM 0 | ||||
#define __GFP_ZERO M_ZERO | #define __GFP_ZERO M_ZERO | ||||
#define __GFP_NORETRY 0 | #define __GFP_NORETRY 0 | ||||
#define __GFP_RECLAIM 0 | #define __GFP_RECLAIM 0 | ||||
#define __GFP_RECLAIMABLE 0 | #define __GFP_RECLAIMABLE 0 | ||||
#define __GFP_RETRY_MAYFAIL 0 | #define __GFP_RETRY_MAYFAIL 0 | ||||
#define __GFP_MOVABLE 0 | #define __GFP_MOVABLE 0 | ||||
#define __GFP_COMP 0 | #define __GFP_COMP 0 | ||||
#define __GFP_KSWAPD_RECLAIM 0 | #define __GFP_KSWAPD_RECLAIM 0 | ||||
#define __GFP_IO 0 | #define __GFP_IO 0 | ||||
#define __GFP_NO_KSWAPD 0 | #define __GFP_NO_KSWAPD 0 | ||||
#define __GFP_WAIT M_WAITOK | #define __GFP_WAIT M_WAITOK | ||||
#define __GFP_DMA32 (1U << 24) /* LinuxKPI only */ | #define __GFP_DMA32 (1U << 24) /* LinuxKPI only */ | ||||
#if defined(LINUXKPI_VERSION) && LINUXKPI_VERSION == 50000 | |||||
#define __GFP_NOTWIRED (1U << 25) | |||||
#endif | |||||
#define __GFP_BITS_SHIFT 25 | #define __GFP_BITS_SHIFT 25 | ||||
#define __GFP_BITS_MASK ((1 << __GFP_BITS_SHIFT) - 1) | #define __GFP_BITS_MASK ((1 << __GFP_BITS_SHIFT) - 1) | ||||
#define __GFP_NOFAIL M_WAITOK | #define __GFP_NOFAIL M_WAITOK | ||||
#define GFP_NOWAIT M_NOWAIT | #define GFP_NOWAIT M_NOWAIT | ||||
#define GFP_ATOMIC (M_NOWAIT | M_USE_RESERVE) | #define GFP_ATOMIC (M_NOWAIT | M_USE_RESERVE) | ||||
#define GFP_KERNEL M_WAITOK | #define GFP_KERNEL M_WAITOK | ||||
#define GFP_USER M_WAITOK | #define GFP_USER M_WAITOK | ||||
#define GFP_HIGHUSER M_WAITOK | #define GFP_HIGHUSER M_WAITOK | ||||
#define GFP_HIGHUSER_MOVABLE M_WAITOK | #define GFP_HIGHUSER_MOVABLE M_WAITOK | ||||
#define GFP_IOFS M_NOWAIT | #define GFP_IOFS M_NOWAIT | ||||
#define GFP_NOIO M_NOWAIT | #define GFP_NOIO M_NOWAIT | ||||
#define GFP_DMA32 __GFP_DMA32 | #define GFP_DMA32 __GFP_DMA32 | ||||
#define GFP_TEMPORARY M_NOWAIT | #define GFP_TEMPORARY M_NOWAIT | ||||
#define GFP_NATIVE_MASK (M_NOWAIT | M_WAITOK | M_USE_RESERVE | M_ZERO) | #define GFP_NATIVE_MASK (M_NOWAIT | M_WAITOK | M_USE_RESERVE | M_ZERO) | ||||
#define GFP_TRANSHUGE 0 | #define GFP_TRANSHUGE 0 | ||||
#define GFP_TRANSHUGE_LIGHT 0 | #define GFP_TRANSHUGE_LIGHT 0 | ||||
CTASSERT((__GFP_DMA32 & GFP_NATIVE_MASK) == 0); | CTASSERT((__GFP_DMA32 & GFP_NATIVE_MASK) == 0); | ||||
CTASSERT((__GFP_BITS_MASK & GFP_NATIVE_MASK) == GFP_NATIVE_MASK); | CTASSERT((__GFP_BITS_MASK & GFP_NATIVE_MASK) == GFP_NATIVE_MASK); | ||||
/* | /* | ||||
* Resolve a page into a virtual address: | * Resolve a page into a virtual address: | ||||
* | * | ||||
* NOTE: This function only works for pages allocated by the kernel. | * NOTE: This function only works for pages allocated by the kernel. | ||||
*/ | */ | ||||
extern void *linux_page_address(struct page *); | extern void *linux_page_address(struct page *); | ||||
#define page_address(page) linux_page_address(page) | #define page_address(page) linux_page_address(page) | ||||
/* | /* | ||||
* Page management for unmapped pages: | * Page management for unmapped pages: | ||||
*/ | */ | ||||
extern vm_page_t linux_alloc_pages(gfp_t flags, unsigned int order); | extern vm_page_t linux_alloc_pages(gfp_t flags, unsigned int order); | ||||
extern void linux_free_pages(vm_page_t page, unsigned int order); | extern void linux_free_pages(vm_page_t page, unsigned int order); | ||||
static inline struct page * | static inline struct page * | ||||
alloc_page(gfp_t flags) | alloc_page(gfp_t flags) | ||||
{ | { | ||||
#ifdef __GFP_NOWIRED | |||||
flags |= __GFP_NOTWIRED; | |||||
#endif | |||||
return (linux_alloc_pages(flags, 0)); | return (linux_alloc_pages(flags, 0)); | ||||
} | } | ||||
static inline struct page * | static inline struct page * | ||||
alloc_pages(gfp_t flags, unsigned int order) | alloc_pages(gfp_t flags, unsigned int order) | ||||
{ | { | ||||
#ifdef __GFP_NOWIRED | |||||
flags |= __GFP_NOTWIRED; | |||||
#endif | |||||
return (linux_alloc_pages(flags, order)); | return (linux_alloc_pages(flags, order)); | ||||
} | } | ||||
static inline struct page * | static inline struct page * | ||||
alloc_pages_node(int node_id, gfp_t flags, unsigned int order) | alloc_pages_node(int node_id, gfp_t flags, unsigned int order) | ||||
{ | { | ||||
#ifdef __GFP_NOWIRED | |||||
flags |= __GFP_NOTWIRED; | |||||
#endif | |||||
return (linux_alloc_pages(flags, order)); | return (linux_alloc_pages(flags, order)); | ||||
} | } | ||||
static inline void | static inline void | ||||
__free_pages(struct page *page, unsigned int order) | __free_pages(struct page *page, unsigned int order) | ||||
{ | { | ||||
linux_free_pages(page, order); | linux_free_pages(page, order); | ||||
▲ Show 20 Lines • Show All 64 Lines • Show Last 20 Lines |