What is the meaning of leading and trailing underscores in Linux kernel identifiers?
There are several cases:
- In public facing headers, i.e. anything that libc will be taking over and putting under
/usr/include/linux
, the standards specify which symbols should be defined and any other symbols specific to the system shall start with underscore and capital letter or two underscores. That's the reason for__KERNEL__
in particular, because it is used in headers that are included both in kernel and in libc and some declarations are different. - In internal code, the convention usually is that symbol
__something
is workhorse forsomething
excluding some management, often locking. That is a reason for things like__d_lookup
. Similar convention for system calls is thatsys_something
is the system call entry point that handles context switch to and from kernel and callsdo_something
to do the actual work. - The
_t
suffix is standard library convention for typedefs. E.g.size_t
,ptrdiff_t
,foff_t
and such. Kernel code follows this convention for it's internal types too.