tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

__attribute__((constructor)) in kernel



What I've learned about it.
TL;DR - .not really useful for kernel
*
- It generates a .ctors (or .init_array on arm or something) section
- GCC has __attribute__((constructor(n))) where n is priority, and the
section entries are sorted in ascending order, which is a handy syntax
 - But not that great; easily replaced with ``sort'' function in linker script
- Userland needs this syntax, because userland applications have no
control about how it is linked; it sets function pointers in .ctors,
to ask ``system'' (linker, run-time) to call those functions before
main().
- In kernel, this is not the case; kernel itself has to call the
functions by itself. This way the section name (.ctors) doesn't
matter at all.
- To not confuse, ELF section (.ctors) is better to be hidden in final kernel.
- Rump will use link-set anyway.


Home | Main Index | Thread Index | Old Index

AltStyle によって変換されたページ (->オリジナル) /