Согласно _syscall (2) странице руководства, макрос _syscall0
может быть устаревшим и требует #include
; действительно, в Linux 4.x его нет
Однако вы можете установить musl-libc и использовать его функцию _syscall
.
И вы можете просто использовать косвенный системный вызов syscall (2) в своем пользовательском коде. Итак, ваша программа тестирования будет
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include
#include
#include
#define __NR_helloworld 323
static inline long mysys_helloworld(void) { return syscall(__NR_helloworld,NULL); }
int main (int argc, char**argv) {
printf("will do the helloworld syscall\n");
if (mysys_helloworld()) perror("helloworld");
return 0;
}
Выше код не протестирован!