jcs's openbsd hax
openbsd
at jcs 104 lines 2.1 kB view raw
1/* Public domain. */ 2 3#ifndef _LINUX_MM_H 4#define _LINUX_MM_H 5 6#include <sys/types.h> 7#include <sys/param.h> 8#include <sys/malloc.h> 9#include <sys/stdint.h> 10#include <sys/atomic.h> 11#include <machine/cpu.h> 12#include <uvm/uvm_extern.h> 13#include <uvm/uvm_glue.h> 14#include <lib/libkern/libkern.h> /* for flsl */ 15#include <linux/shrinker.h> 16#include <linux/overflow.h> 17#include <linux/pgtable.h> 18 19#define PageHighMem(x) 0 20 21#define page_to_phys(page) (VM_PAGE_TO_PHYS(page)) 22#define page_to_pfn(pp) (VM_PAGE_TO_PHYS(pp) / PAGE_SIZE) 23#define pfn_to_page(pfn) (PHYS_TO_VM_PAGE(ptoa(pfn))) 24#define nth_page(page, n) (&(page)[(n)]) 25#define offset_in_page(off) ((vaddr_t)(off) & PAGE_MASK) 26#define set_page_dirty(page) atomic_clearbits_int(&page->pg_flags, PG_CLEAN) 27 28#define PAGE_ALIGN(addr) (((addr) + PAGE_MASK) & ~PAGE_MASK) 29 30#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) 31#define PFN_DOWN(x) ((x) >> PAGE_SHIFT) 32#define PFN_PHYS(x) ((x) << PAGE_SHIFT) 33 34bool is_vmalloc_addr(const void *); 35 36static inline void * 37kvmalloc(size_t size, gfp_t flags) 38{ 39 return malloc(size, M_DRM, flags); 40} 41 42static inline void * 43kvmalloc_array(size_t n, size_t size, int flags) 44{ 45 if (n != 0 && SIZE_MAX / n < size) 46 return NULL; 47 return malloc(n * size, M_DRM, flags); 48} 49 50static inline struct vm_page * 51vmalloc_to_page(const void *va) 52{ 53 return uvm_atopg((vaddr_t)va); 54} 55 56static inline struct vm_page * 57virt_to_page(const void *va) 58{ 59 return uvm_atopg((vaddr_t)va); 60} 61 62static inline void * 63kvcalloc(size_t n, size_t size, int flags) 64{ 65 return kvmalloc_array(n, size, flags | M_ZERO); 66} 67 68static inline void * 69kvzalloc(size_t size, int flags) 70{ 71 return malloc(size, M_DRM, flags | M_ZERO); 72} 73 74static inline void 75kvfree(const void *objp) 76{ 77 free((void *)objp, M_DRM, 0); 78} 79 80static inline long 81si_mem_available(void) 82{ 83 return uvmexp.free; 84} 85 86static inline unsigned int 87get_order(size_t size) 88{ 89 return flsl((size - 1) >> PAGE_SHIFT); 90} 91 92static inline long 93totalram_pages(void) 94{ 95 return uvmexp.npages; 96} 97 98static inline bool 99want_init_on_free(void) 100{ 101 return false; 102} 103 104#endif