mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-21 00:06:32 +00:00
new: 初步完成了mmio地址空间自动分配(未测试)
bugfix: mmio虚拟地址分配的bug
This commit is contained in:
@ -3,6 +3,7 @@
|
||||
#include <common/glib.h>
|
||||
#include "mm-types.h"
|
||||
#include "mm.h"
|
||||
#include "slab.h"
|
||||
|
||||
#define MMIO_BUDDY_MAX_EXP PAGE_1G_SHIFT
|
||||
#define MMIO_BUDDY_MIN_EXP PAGE_4K_SHIFT
|
||||
@ -44,8 +45,35 @@ struct mmio_buddy_mem_pool
|
||||
struct __mmio_free_region_list free_regions[MMIO_BUDDY_REGION_COUNT];
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 释放address region结构体
|
||||
*
|
||||
* @param region 待释放的结构体
|
||||
*/
|
||||
static __always_inline void __mmio_buddy_release_addr_region(struct __mmio_buddy_addr_region *region)
|
||||
{
|
||||
kfree(region);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 归还一块内存空间到buddy
|
||||
*
|
||||
* @param vaddr 虚拟地址
|
||||
* @param exp 内存空间的大小(2^exp)
|
||||
* @return int 返回码
|
||||
*/
|
||||
int __mmio_buddy_give_back(uint64_t vaddr, int exp);
|
||||
|
||||
/**
|
||||
* @brief 初始化mmio的伙伴系统
|
||||
*
|
||||
*/
|
||||
void mmio_buddy_init();
|
||||
void mmio_buddy_init();
|
||||
|
||||
/**
|
||||
* @brief 从buddy中申请一块指定大小的内存区域
|
||||
*
|
||||
* @param exp 内存区域的大小(2^exp)
|
||||
* @return struct __mmio_buddy_addr_region* 符合要求的内存区域。没有满足要求的时候,返回NULL
|
||||
*/
|
||||
struct __mmio_buddy_addr_region *mmio_buddy_query_addr_region(int exp);
|
Reference in New Issue
Block a user