内存管理之bootmem管理之标记内存为reserve

本文介绍Linux内核中通过reserve_bootmem_node和reserve_bootmem函数预留内存范围的方法。这两种方法允许在启动过程中为特定组件保留内存,确保关键内存区域不被分配给其他用途。文章详细解释了如何指定要保留的内存范围及其所在节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要提供reserve_bootmem_node和reserve_bootmem

/**
 * reserve_bootmem_node - mark a page range as reserved
 * @pgdat: node the range resides on
 * @physaddr: starting address of the range
 * @size: size of the range in bytes
 * @flags: reservation flags (see linux/bootmem.h)
 *
 * Partial pages will be reserved.
 *
 * The range must reside completely on the specified node.
 */
int __init reserve_bootmem_node(pg_data_t *pgdat, unsigned long physaddr,
				 unsigned long size, int flags)
{
	unsigned long start, end;


	start = PFN_DOWN(physaddr);
	end = PFN_UP(physaddr + size);


	return mark_bootmem_node(pgdat->bdata, start, end, 1, flags);
}




/**
 * reserve_bootmem - mark a page range as reserved
 * @addr: starting address of the range
 * @size: size of the range in bytes
 * @flags: reservation flags (see linux/bootmem.h)
 *
 * Partial pages will be reserved.
 *
 * The range must be contiguous but may span node boundaries.
 */
int __init reserve_bootmem(unsigned long addr, unsigned long size,
			    int flags)
{
	unsigned long start, end;


	start = PFN_DOWN(addr);
	end = PFN_UP(addr + size);


	return mark_bootmem(start, end, 1, flags);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值