asmlinkage ничего не определено в коде Linux - PullRequest
0 голосов
/ 07 ноября 2019

Я искал тег asmlinkage.

С https://kernelnewbies.org/FAQ/asmlinkage

Это #define для некоторой магии gcc, которая сообщает компилятору, что функция не должна ожидать, что найдетлюбой из его аргументов в регистрах (обычная оптимизация), но только в стеке ЦП.

В определении определено, что он пуст для x86_64

#ifdef __cplusplus
#define CPP_ASMLINKAGE extern "C"
#else
#define CPP_ASMLINKAGE
#endif

#ifndef asmlinkage
#define asmlinkage CPP_ASMLINKAGE
#endif

Кроме того,Я читал, что спецификация ABI говорит, что мы должны поместить номер системного вызова в регистр, а параметры в некоторые другие регистры.

Тогда почему мы ищем параметры функции в стеке. Номер системного вызова также помещен в стек?

...