鸿蒙研究站
|
官方文档
|
源码分析
== 鸿蒙内核参考手册 ==
内核注释
|
论坛
|
赞助作者
更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_vm_iomap.h
浏览该文件的文档.
1
/*
2
* Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3
* Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without modification,
6
* are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice, this list of
9
* conditions and the following disclaimer.
10
*
11
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
* of conditions and the following disclaimer in the documentation and/or other materials
13
* provided with the distribution.
14
*
15
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
16
* to endorse or promote products derived from this software without specific prior written
17
* permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef __LOS_VM_IOMAP_H__
33
#define __LOS_VM_IOMAP_H__
34
35
#include "
los_typedef.h
"
36
#include "
los_vm_zone.h
"
37
38
#ifdef __cplusplus
39
#if __cplusplus
40
extern
"C"
{
41
#endif
/* __cplusplus */
42
#endif
/* __cplusplus */
43
44
/**
45
* @brief
46
* @verbatim
47
DMA,全称Direct Memory Access,即直接存储器访问。
48
DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
49
DMA的作用就是实现数据的直接传输,而去掉了传统数据传输需要CPU寄存器参与的环节,主要涉及四种情况的数据传输,
50
但本质上是一样的,都是从内存的某一区域传输到内存的另一区域(外设的数据寄存器本质上就是内存的一个存储单元)
51
* @endverbatim
52
*/
53
54
enum
DmaMemType
{
55
DMA_CACHE
,
///< 有缓存的DMA
56
DMA_NOCACHE
///< 无缓存的DMA
57
};
58
59
/* thread safety */
60
VOID *
LOS_DmaMemAlloc
(
DMA_ADDR_T
*dmaAddr,
size_t
size,
size_t
align,
enum
DmaMemType
type);
61
VOID
LOS_DmaMemFree
(VOID *vaddr);
62
DMA_ADDR_T
LOS_DmaVaddrToPaddr
(VOID *vaddr);
63
64
#ifdef __cplusplus
65
#if __cplusplus
66
}
67
#endif
/* __cplusplus */
68
#endif
/* __cplusplus */
69
70
#endif
/* __LOS_VM_IOMAP_H__ */
los_typedef.h
DMA_ADDR_T
unsigned long DMA_ADDR_T
Definition:
los_typedef.h:210
LOS_DmaMemAlloc
VOID * LOS_DmaMemAlloc(DMA_ADDR_T *dmaAddr, size_t size, size_t align, enum DmaMemType type)
分配DMA空间
Definition:
los_vm_iomap.c:86
DmaMemType
DmaMemType
Definition:
los_vm_iomap.h:54
DMA_CACHE
@ DMA_CACHE
有缓存的DMA
Definition:
los_vm_iomap.h:55
DMA_NOCACHE
@ DMA_NOCACHE
无缓存的DMA
Definition:
los_vm_iomap.h:56
LOS_DmaMemFree
VOID LOS_DmaMemFree(VOID *vaddr)
释放 DMA指针
Definition:
los_vm_iomap.c:120
LOS_DmaVaddrToPaddr
DMA_ADDR_T LOS_DmaVaddrToPaddr(VOID *vaddr)
将DMA虚拟地址转成物理地址
Definition:
los_vm_iomap.c:148
los_vm_zone.h
kernel
base
include
los_vm_iomap.h
公众号:鸿蒙研究站(weharmonyos)
|
论坛: bbs.weharmonyos.com
| 制作者
鸿蒙研究站 | weharmonyos.com