luckfox-pico-sdk/sysdrv/drv_ko/wifi/hichannel/oal/oal_mm.h
2023-08-08 20:36:47 +08:00

83 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2020-2020. All rights reserved.
* Description: oal_mm.h 的头文件
* Author: Hisilicon
* Create: 2020-09-03
*/
#ifndef __OAL_MM_H__
#define __OAL_MM_H__
/* 头文件包含 */
#include <linux/slab.h>
#include <linux/hardirq.h>
#include <linux/vmalloc.h>
#include "hi_types_base.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
/* 宏定义 */
#define OAL_GFP_KERNEL GFP_KERNEL
#define OAL_GFP_ATOMIC GFP_ATOMIC
/* inline 函数声明 */
/*****************************************************************************
功能描述 : 申请核心态的内存空间并填充0。对于Linux操作系统而言
需要考虑中断上下文和内核上下文的不同情况(GFP_KERNEL和GFP_ATOMIC)。
输入参数 : ul_size: alloc mem size
返 回 值 : alloc mem addr
*****************************************************************************/
static inline hi_void* oal_memalloc(hi_u32 ul_size)
{
hi_s32 l_flags = GFP_KERNEL;
hi_void *puc_mem_space = HI_NULL;
/* 不睡眠或在中断程序中标志置为GFP_ATOMIC */
if (in_interrupt() || irqs_disabled()) {
l_flags = GFP_ATOMIC;
}
puc_mem_space = kmalloc(ul_size, l_flags);
if (puc_mem_space == HI_NULL) {
return HI_NULL;
}
return puc_mem_space;
}
static inline hi_void* oal_kzalloc(hi_u32 ul_size, hi_s32 l_flags)
{
return kzalloc(ul_size, l_flags);
}
static inline hi_void* oal_vmalloc(hi_u32 ul_size)
{
return vmalloc(ul_size);
}
/*****************************************************************************
功能描述 : 释放核心态的内存空间。
*****************************************************************************/
static inline hi_void oal_free(const hi_void *p_buf)
{
kfree(p_buf);
}
static inline hi_void oal_vfree(hi_void *p_buf)
{
vfree(p_buf);
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif /* end of oal_mm.h */