内核宏定义1
这是Linux内核中的start_kernel函数的一部分代码。它的作用是初始化内核的一些基本组件和数据结构。
asmlinkage: 这是一个函数声明修饰符,指示编译器把函数参数放在堆栈中,而不是寄存器中。
__visible: 这是另一个函数声明修饰符,用于指示函数可见性,即该函数可以在其他文件中使用。
__no_sanitize_address: 这也是一个函数声明修饰符,用于告诉编译器在编译该函数时不要进行地址检查。
内核宏定义2
这是Linux内核中的一些宏定义,用于定义代码和数据的属性和位置。
-
__init
: 这是一个宏定义,用于标记函数为内核初始化代码。这些代码只在内核启动时执行一次,然后就不再需要了。该宏定义会将函数放置在.init.text节(section)中。 -
__initdata
: 这是一个宏定义,用于标记数据为内核初始化数据。这些数据只在内核启动时使用一次,然后就不再需要了。该宏定义会将数据放置在.init.data节(section)中。 -
__exitdata
: 这是一个宏定义,用于标记数据为内核退出数据。这些数据只在内核退出时使用一次,然后就不再需要了。该宏定义会将数据放置在.exit.data节(section)中。 -
__exit_call
: 这是一个宏定义,用于标记函数为内核退出函数。这些函数只在内核退出时使用一次,然后就不再需要了。该宏定义会将函数放置在.exitcall.exit节(section)中,并使用了__used
修饰符,表示即使没有被调用也不会被编译器优化掉。
内核宏定义3
这是Linux内核中的一些宏定义,用于定义内核初始化和退出过程中的函数调用和位置。
-
__initcall(fn)
: 这是一个宏定义,用于将函数标记为内核初始化函数。该宏定义会将函数包装在一个initcall_t类型的结构体中,并将该结构体添加到.initcall.init节(section)中,以便在内核启动时自动调用。 -
__exitcall(fn)
: 这是一个宏定义,用于将函数标记为内核退出函数。该宏定义会将函数包装在一个exitcall_t类型的结构体中,并将该结构体添加到.exitcall.exit节(section)中,以便在内核退出时自动调用。 -
__exit_call
: 这是一个宏定义,用于标记函数为内核退出函数。这些函数只在内核退出时使用一次,然后就不再需要了。该宏定义会将函数放置在.exitcall.exit节(section)中,并使用了__used
修饰符,表示即使没有被调用也不会被编译器优化掉。 -
__init_call
: 这是一个宏定义,用于标记函数为内核初始化函数。这些函数只在内核启动时使用一次,然后就不再需要了。该宏定义会将函数放置在.initcall.init节(section)中,并使用了__used
修饰符,表示即使没有被调用也不会被编译器优化掉。