WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
oal_mm.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
3 * Create: 2022-4-27
4 */
5
6#ifndef OAL_LINUX_MM_H
7#define OAL_LINUX_MM_H
8
9#include <linux/slab.h>
10#include <linux/hardirq.h>
11#include <linux/vmalloc.h>
12#include <linux/delay.h>
13#include "oal_types.h"
14
15#ifdef __cplusplus
16#if __cplusplus
17extern "C" {
18#endif
19#endif
20
21typedef dma_addr_t oal_dma_addr;
22
30
31/*****************************************************************************
32 功能描述 : 申请核心态的内存空间,并填充0。对于Linux操作系统而言,
33 需要考虑中断上下文和内核上下文的不同情况(GFP_KERNEL和GFP_ATOMIC)。
34 输入参数 : size: alloc mem size
35 返 回 值 : alloc mem addr
36*****************************************************************************/
38{
39 osal_s32 l_flags = GFP_KERNEL;
40 osal_void *mem_space;
41
42 /* 不睡眠或在中断程序中标志置为GFP_ATOMIC */
43 if ((in_interrupt() != 0) || (irqs_disabled() != 0)) {
44 l_flags = GFP_ATOMIC;
45 }
46
47 if (unlikely(size == 0)) {
48 return OAL_PTR_NULL;
49 }
50
51 mem_space = kmalloc(size, l_flags);
52 if (mem_space == OAL_PTR_NULL) {
53 return OAL_PTR_NULL;
54 }
55
56 return mem_space;
57}
58
59/*****************************************************************************
60 功能描述 : 释放核心态的内存空间。
61 输入参数 : pbuf:需释放的内存地址
62*****************************************************************************/
64{
65 kfree(p_buf);
66}
67
68#ifdef __cplusplus
69 #if __cplusplus
70 }
71 #endif
72#endif
73
74#endif /* end of oal_mm.h */
75
#define unlikely(x)
Definition common_def.h:45
#define OAL_INLINE
Definition driver_soc_common.h:47
#define GFP_ATOMIC
Definition hmac_ext_if.h:319
oal_data_direction
Definition oal_mm.h:23
@ OAL_FROM_DEVICE
Definition oal_mm.h:26
@ OAL_BIDIRECTIONAL
Definition oal_mm.h:24
@ OAL_TO_DEVICE
Definition oal_mm.h:25
@ OAL_NONE
Definition oal_mm.h:27
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
osal_u8 oal_direction_uint8
Definition oal_mm.h:29
dma_addr_t oal_dma_addr
Definition oal_mm.h:21
#define OAL_PTR_NULL
Definition oal_types_device_rom.h:30
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
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