linux-特殊符号

__init利用了 GCC 的特性 attribute((section(".init.text")))。这意味着编译器在生成二进制文件时,不会把这个函数放在常规的 .text 代码段,而是专门开辟了一个名为 .init.text 的特殊段。

Linux 内核启动或加载模块时,执行流程如下:

加载:内核将所有标注为 __init 的函数加载到内存的特定区域。

执行:调用这些初始化函数(如 module_init 指定的函数)。

释放:一旦初始化完成,内核会调用 free_initmem()。

内核会遍历 .init.text 所在的内存页。

释放这些内存页,将其重新标记为可用状态。

相关推荐
steins_甲乙2 分钟前
# 从 0 做一个小型内存泄漏检测器:开篇与架构设计
linux
蒸蒸yyyyzwd1 小时前
后端学习笔记 day4
linux·笔记·学习
upp1 小时前
[最新版本centos 10系统制作与安装]
linux·运维·centos
ShineWinsu2 小时前
对于Linux:进程优先级、进程切换以及进程调度的解析
linux·面试·笔试·进程·进程切换·进程调度·进程优先级
Kira Skyler3 小时前
kprobe函数入口时的汇编跳板执行流程与栈帧机制
linux·汇编
桌面运维家3 小时前
VHD/VHDX 数据守护:BAT位图校验与修复
linux·服务器·网络
pupudawang3 小时前
Linux下安装Nginx服务及systemctl方式管理nginx详情
linux·运维·nginx
零K沁雪3 小时前
Linux 内核遍历宏介绍
linux·内核
淼淼爱喝水4 小时前
openEuler 下 Ansible 基础命令详解与实操演示2
linux·运维·windows
拾贰_C4 小时前
【Ubuntu | install | 安装软件】 Ubuntu软件安装多种方式以及卸载
linux·运维·ubuntu