Сегодня мне попался такой массив структур __versions
в коде ядра:
static const struct modversion_info ____versions[]
__used __section("__versions") = {
{ 0x86e941f6, "module_layout" },
{ 0x3213f038, "mutex_unlock" },
{ 0xe1537255, "__list_del_entry_valid" },
{ 0x4dfa8d4b, "mutex_lock" },
{ 0x68f31cbd, "__list_add_valid" },
{ 0x800473f, "__cond_resched" },
{ 0x542be051, "__x86_indirect_alt_jmp_rax" },
{ 0x687303f7, "module_put" },
{ 0x2ea2c95c, "__x86_indirect_thunk_rax" },
{ 0xbdfb6dbb, "__fentry__" },
{ 0x9a353ae, "__x86_indirect_alt_call_rax" },
{ 0x64a62cf6, "try_module_get" },
};
По имени ____versions[]
… Грепнула, а там есть и пятерное, и девятерное нижнее подчеркивание. Пруф:
include/linux/rcupdate.h: typeof(*p) *_________p1 = (typeof(*p) *__force)READ_ONCE(p); \
Зачем вообще используют подобную практику? Неудобно же (да, даже в моно-шрифте), я еще понимаю двойное или тройное, но 9х? Разработчики там сидят и считают каждое подчеркивание, как в Лиспе скобочки? Или может у них есть тулзы для подсчета нижних подчеркиваний? Дискасс