一个linux驱动链表例子

这篇博客探讨了Free_list的初始化过程,包括structlist_head free_list结构和scsiio_tracker的使用。__get_free_pages函数用于按指定的gfp_mask和order分配物理页面。Free_list的申请和删除涉及到链表的结构,而回收则关注如何将已分配的页面归还到Free_list。文章深入解析了Linux内核中的内存管理策略。

Free_list初始化

struct list_head free_list;
struct scsiio_tracker *scsi_lookup;

在这里插入图片描述
unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
功能:以gfp_mask的方式分配2^order个物理页面
gfP_mask:分配的方式,指出如何分配在哪分配如GFP_KERNEL
order:分配2^order个页面
返回值:返回分配的第一个页的逻辑地址
在这里插入图片描述
在这里插入图片描述
free_list->smid0 tracker_list ->smid1 tracker_list->……smidn tracker_list->free_list

Free_list的申请和删除

在这里插入图片描述

Free_list的回收

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值