Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/include/linux/slab.h
/*- | /*- | ||||
* Copyright (c) 2010 Isilon Systems, Inc. | * Copyright (c) 2010 Isilon Systems, Inc. | ||||
* Copyright (c) 2010 iX Systems, Inc. | * Copyright (c) 2010 iX Systems, Inc. | ||||
* Copyright (c) 2010 Panasas, Inc. | * Copyright (c) 2010 Panasas, Inc. | ||||
* Copyright (c) 2013-2017 Mellanox Technologies, Ltd. | * Copyright (c) 2013-2021 Mellanox Technologies, Ltd. | ||||
* All rights reserved. | * All rights reserved. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
* modification, are permitted provided that the following conditions | * modification, are permitted provided that the following conditions | ||||
* are met: | * are met: | ||||
* 1. Redistributions of source code must retain the above copyright | * 1. Redistributions of source code must retain the above copyright | ||||
* notice unmodified, this list of conditions, and the following | * notice unmodified, this list of conditions, and the following | ||||
* disclaimer. | * disclaimer. | ||||
Show All 19 Lines | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/limits.h> | #include <sys/limits.h> | ||||
#include <sys/proc.h> | #include <sys/proc.h> | ||||
#include <vm/uma.h> | #include <vm/uma.h> | ||||
#include <linux/compat.h> | |||||
#include <linux/types.h> | #include <linux/types.h> | ||||
#include <linux/gfp.h> | #include <linux/gfp.h> | ||||
#include <linux/llist.h> | #include <linux/llist.h> | ||||
MALLOC_DECLARE(M_KMALLOC); | MALLOC_DECLARE(M_KMALLOC); | ||||
#define kvmalloc(size, flags) kmalloc(size, flags) | #define kvmalloc(size, flags) kmalloc(size, flags) | ||||
#define kvzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO) | #define kvzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO) | ||||
#define kvcalloc(n, size, flags) kvmalloc_array(n, size, (flags) | __GFP_ZERO) | #define kvcalloc(n, size, flags) kvmalloc_array(n, size, (flags) | __GFP_ZERO) | ||||
#define kzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO) | #define kzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO) | ||||
#define kzalloc_node(size, flags, node) kmalloc(size, (flags) | __GFP_ZERO) | #define kzalloc_node(size, flags, node) kmalloc_node(size, (flags) | __GFP_ZERO, node) | ||||
#define kfree_const(ptr) kfree(ptr) | #define kfree_const(ptr) kfree(ptr) | ||||
#define vzalloc(size) __vmalloc(size, GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO, 0) | #define vzalloc(size) __vmalloc(size, GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO, 0) | ||||
#define vfree(arg) kfree(arg) | #define vfree(arg) kfree(arg) | ||||
#define kvfree(arg) kfree(arg) | #define kvfree(arg) kfree(arg) | ||||
#define vmalloc_node(size, node) __vmalloc(size, GFP_KERNEL, 0) | #define vmalloc_node(size, node) __vmalloc_node(size, GFP_KERNEL, node) | ||||
#define vmalloc_user(size) __vmalloc(size, GFP_KERNEL | __GFP_ZERO, 0) | #define vmalloc_user(size) __vmalloc(size, GFP_KERNEL | __GFP_ZERO, 0) | ||||
#define vmalloc(size) __vmalloc(size, GFP_KERNEL, 0) | #define vmalloc(size) __vmalloc(size, GFP_KERNEL, 0) | ||||
#define __kmalloc(...) kmalloc(__VA_ARGS__) | #define __kmalloc(...) kmalloc(__VA_ARGS__) | ||||
#define kmalloc_node(chunk, flags, n) kmalloc(chunk, flags) | |||||
/* | /* | ||||
* Prefix some functions with linux_ to avoid namespace conflict | * Prefix some functions with linux_ to avoid namespace conflict | ||||
* with the OpenSolaris code in the kernel. | * with the OpenSolaris code in the kernel. | ||||
*/ | */ | ||||
#define kmem_cache linux_kmem_cache | #define kmem_cache linux_kmem_cache | ||||
#define kmem_cache_create(...) linux_kmem_cache_create(__VA_ARGS__) | #define kmem_cache_create(...) linux_kmem_cache_create(__VA_ARGS__) | ||||
#define kmem_cache_alloc(...) linux_kmem_cache_alloc(__VA_ARGS__) | #define kmem_cache_alloc(...) linux_kmem_cache_alloc(__VA_ARGS__) | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
static inline void * | static inline void * | ||||
kmalloc(size_t size, gfp_t flags) | kmalloc(size_t size, gfp_t flags) | ||||
{ | { | ||||
return (malloc(size, M_KMALLOC, linux_check_m_flags(flags))); | return (malloc(size, M_KMALLOC, linux_check_m_flags(flags))); | ||||
} | } | ||||
static inline void * | static inline void * | ||||
kmalloc_node(size_t size, gfp_t flags, int node) | |||||
{ | |||||
return (malloc_domainset(size, M_KMALLOC, | |||||
linux_get_vm_domain_set(node), linux_check_m_flags(flags))); | |||||
} | |||||
static inline void * | |||||
kcalloc(size_t n, size_t size, gfp_t flags) | kcalloc(size_t n, size_t size, gfp_t flags) | ||||
{ | { | ||||
flags |= __GFP_ZERO; | flags |= __GFP_ZERO; | ||||
return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | ||||
} | } | ||||
static inline void * | static inline void * | ||||
kcalloc_node(size_t n, size_t size, gfp_t flags, int node) | |||||
{ | |||||
flags |= __GFP_ZERO; | |||||
return (mallocarray_domainset(n, size, M_KMALLOC, | |||||
linux_get_vm_domain_set(node), linux_check_m_flags(flags))); | |||||
} | |||||
static inline void * | |||||
__vmalloc(size_t size, gfp_t flags, int other) | __vmalloc(size_t size, gfp_t flags, int other) | ||||
{ | { | ||||
return (malloc(size, M_KMALLOC, linux_check_m_flags(flags))); | return (malloc(size, M_KMALLOC, linux_check_m_flags(flags))); | ||||
} | } | ||||
static inline void * | static inline void * | ||||
__vmalloc_node(size_t size, gfp_t flags, int node) | |||||
{ | |||||
return (malloc_domainset(size, M_KMALLOC, | |||||
linux_get_vm_domain_set(node), linux_check_m_flags(flags))); | |||||
} | |||||
static inline void * | |||||
vmalloc_32(size_t size) | vmalloc_32(size_t size) | ||||
{ | { | ||||
return (contigmalloc(size, M_KMALLOC, M_WAITOK, 0, UINT_MAX, 1, 1)); | return (contigmalloc(size, M_KMALLOC, M_WAITOK, 0, UINT_MAX, 1, 1)); | ||||
} | } | ||||
static inline void * | static inline void * | ||||
kmalloc_array(size_t n, size_t size, gfp_t flags) | kmalloc_array(size_t n, size_t size, gfp_t flags) | ||||
{ | { | ||||
return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | ||||
} | |||||
static inline void * | |||||
kmalloc_array_node(size_t n, size_t size, gfp_t flags, int node) | |||||
{ | |||||
return (mallocarray_domainset(n, size, M_KMALLOC, | |||||
linux_get_vm_domain_set(node), linux_check_m_flags(flags))); | |||||
} | } | ||||
static inline void * | static inline void * | ||||
kvmalloc_array(size_t n, size_t size, gfp_t flags) | kvmalloc_array(size_t n, size_t size, gfp_t flags) | ||||
{ | { | ||||
return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | return (mallocarray(n, size, M_KMALLOC, linux_check_m_flags(flags))); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |