WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
oal_mm.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2012-2023. All rights reserved.
3 * Description: oal_mm.h 的头文件
4 * Create: 2012年12月10日
5 */
6
7#ifndef __OAL_MM_H__
8#define __OAL_MM_H__
9
10#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
11#include <linux/slab.h>
12#include <linux/hardirq.h>
13#include <linux/vmalloc.h>
14#elif defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
15#include <string.h>
16#endif
17#include <malloc.h>
18#include <stdlib.h>
19#include "oal_types.h"
20
21#ifdef __cplusplus
22#if __cplusplus
23extern "C" {
24#endif
25#endif
26
27/*****************************************************************************
28 功能描述 : 申请核心态的内存空间,并填充0。对于Linux操作系统而言,
29 需要考虑中断上下文和内核上下文的不同情况(GFP_KERNEL和GFP_ATOMIC)。
30 输入参数 : size: alloc mem size
31 返 回 值 : alloc mem addr
32*****************************************************************************/
34{
35#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
36 td_s32 l_flags = GFP_KERNEL;
37 td_void *mem_space = OSAL_NULL;
38
39 /* 不睡眠或在中断程序中标志置为GFP_ATOMIC */
40 if (in_interrupt() || irqs_disabled()) {
41 l_flags = GFP_ATOMIC;
42 }
43
44 if (size == 0) {
45 return OSAL_NULL;
46 }
47
48 mem_space = kmalloc(size, l_flags);
49 if (mem_space == OSAL_NULL) {
50 return OSAL_NULL;
51 }
52
53 return mem_space;
54#elif defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
55 return malloc(size);
56#endif
57}
58
59/*****************************************************************************
60 函 数 名 : oal_free
61 功能描述 : 释放核心态的内存空间。
62 输入参数 : pbuf:需释放的内存地址
63 输出参数 : 无
64 返 回 值 :
65 调用函数 :
66 被调函数 :
67
68 修改历史 :
69 1.日 期 : 2012年9月17日
70 修改内容 : 新生成函数
71
72*****************************************************************************/
74{
75 if (p_buf != NULL) {
76 free(p_buf);
77 }
78}
79
80#ifdef __cplusplus
81#if __cplusplus
82}
83#endif
84#endif
85
86#endif /* end of oal_mm.h */
87
#define NULL
Definition common_def.h:21
#define OAL_INLINE
Definition driver_soc_common.h:47
#define GFP_ATOMIC
Definition hmac_ext_if.h:319
OAL_STATIC OAL_INLINE osal_void * oal_memalloc(osal_u32 size)
Definition oal_mm.h:37
OAL_STATIC OAL_INLINE osal_void oal_free(osal_void *p_buf)
Definition oal_mm.h:63
void free(void *addr)
释放动态内存,需要调用uapi_register_malloc接口先注册后才能使用。
Definition malloc.c:68
void * malloc(size_t size)
申请动态内存,需要调用uapi_register_malloc接口先注册后才能使用。
Definition malloc.c:59
#define OSAL_NULL
Definition osal_types.h:65
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
#define OAL_STATIC
Definition soc_wifi_service_api.c:30
void td_void
Definition td_type.h:49
int td_s32
Definition td_type.h:44