linux-特殊符号

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

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

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

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

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

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

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

相关推荐
_OP_CHEN2 小时前
【Linux系统编程】(四十七)线程安全与线程锁深度解析:从概念到实战,避坑指南全掌握
linux·操作系统·线程池·进程·线程安全·c/c++·线程锁
探序基因2 小时前
安装R包arrow
linux·运维·服务器
JiMoKuangXiangQu2 小时前
Linux 中断线程化
linux·中断线程化
AI+程序员在路上2 小时前
linux中bash与sh脚本区别
linux·运维·bash
路弥行至2 小时前
linux运行脚本出现错误信息 /bin/bash^M: bad interpreter解决方法
linux·运维·开发语言·经验分享·笔记·其他·bash
我爱学习好爱好爱2 小时前
Elasticsearch 7.17.10 双节点集群部署实战(基于 Rocky Linux 9.6)
大数据·linux·elasticsearch
豆浆煮粉2 小时前
基于 Linux+CMake 从零集成 Lua 脚本引擎 (附 Sol2 避坑指南)
linux·lua
NEAI_N2 小时前
离网设备的加密解密方案
linux·服务器·网络
左手の明天2 小时前
Linux内核裁剪深入浅出:从原理到实操,打造轻量化嵌入式内核
linux·arm开发·c++