configure: Add __vmalloc() wrapper
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
bbd0cb57a5
commit
ca7f809965
42
configure.d/1_vmalloc.conf
Normal file
42
configure.d/1_vmalloc.conf
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright(c) 2012-2020 Intel Corporation
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
|
#
|
||||||
|
|
||||||
|
. $(dirname $3)/conf_framework
|
||||||
|
|
||||||
|
check() {
|
||||||
|
cur_name=$(basename $2)
|
||||||
|
config_file_path=$1
|
||||||
|
if compile_module $cur_name "__vmalloc(0, 0);" "linux/vmalloc.h"
|
||||||
|
then
|
||||||
|
echo $cur_name "1" >> $config_file_path
|
||||||
|
elif compile_module $cur_name "struct pgprot x; __vmalloc(0, 0, x);" "linux/vmalloc.h"
|
||||||
|
then
|
||||||
|
echo $cur_name "2" >> $config_file_path
|
||||||
|
else
|
||||||
|
echo $cur_name "X" >> $config_file_path
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply() {
|
||||||
|
case "$1" in
|
||||||
|
"1")
|
||||||
|
add_function "
|
||||||
|
static inline void *cas_vmalloc(unsigned long size, gfp_t gfp_mask)
|
||||||
|
{
|
||||||
|
return __vmalloc(size, gfp_mask);
|
||||||
|
}" ;;
|
||||||
|
"2")
|
||||||
|
add_function "
|
||||||
|
static inline void *cas_vmalloc(unsigned long size, gfp_t gfp_mask)
|
||||||
|
{
|
||||||
|
return __vmalloc(size, gfp_mask, PAGE_KERNEL);
|
||||||
|
}" ;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
conf_run $@
|
@ -41,7 +41,7 @@ static inline void env_free(const void *ptr)
|
|||||||
|
|
||||||
static inline void *env_vmalloc_flags(size_t size, int flags)
|
static inline void *env_vmalloc_flags(size_t size, int flags)
|
||||||
{
|
{
|
||||||
return __vmalloc(size, flags | __GFP_HIGHMEM, PAGE_KERNEL);
|
return cas_vmalloc(size, flags | __GFP_HIGHMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void *env_vzalloc_flags(size_t size, int flags)
|
static inline void *env_vzalloc_flags(size_t size, int flags)
|
||||||
|
@ -77,17 +77,18 @@ static env_allocator *cas_mpool_get_allocator(
|
|||||||
|
|
||||||
void *cas_mpool_new_f(struct cas_mpool *mpool, uint32_t count, int flags)
|
void *cas_mpool_new_f(struct cas_mpool *mpool, uint32_t count, int flags)
|
||||||
{
|
{
|
||||||
|
unsigned long size;
|
||||||
void *items = NULL;
|
void *items = NULL;
|
||||||
env_allocator *allocator;
|
env_allocator *allocator;
|
||||||
|
|
||||||
allocator = cas_mpool_get_allocator(mpool, count);
|
allocator = cas_mpool_get_allocator(mpool, count);
|
||||||
|
|
||||||
if (allocator)
|
if (allocator) {
|
||||||
items = env_allocator_new(allocator);
|
items = env_allocator_new(allocator);
|
||||||
else
|
} else {
|
||||||
items = __vmalloc(mpool->hdr_size + (mpool->item_size * count),
|
size = mpool->hdr_size + (mpool->item_size * count);
|
||||||
flags | __GFP_ZERO | __GFP_HIGHMEM,
|
items = cas_vmalloc(size, flags | __GFP_ZERO | __GFP_HIGHMEM);
|
||||||
PAGE_KERNEL);
|
}
|
||||||
|
|
||||||
#ifdef ZERO_OR_NULL_PTR
|
#ifdef ZERO_OR_NULL_PTR
|
||||||
if (ZERO_OR_NULL_PTR(items))
|
if (ZERO_OR_NULL_PTR(items))
|
||||||
|
Loading…
Reference in New Issue
Block a user