Как добавить системный вызов в ядро ​​linux 4.x

Да, Вы можете, с yes. При выполнении его без аргументов это печатает букву y неограниченно долго к stdout, и если Вы даете ему аргумент, строку или букву или что-нибудь, это распечатает это неограниченно долго к stdout.

В Вашем случае Вы сделали бы это следующим образом:

yes | yum groupinstall "DevelopmentTools" 

2
23.05.2017, 15:40
2 ответа

Согласно _syscall (2) странице руководства, макрос _syscall0 может быть устаревшим и требует #include ; действительно, в Linux 4.x его нет

Однако вы можете установить musl-libc и использовать его функцию _syscall .

И вы можете просто использовать косвенный системный вызов syscall (2) в своем пользовательском коде. Итак, ваша программа тестирования будет

#define _GNU_SOURCE         /* See feature_test_macros(7) */
#include <unistd.h>
#include <sys/syscall.h> 
#include <stdio.h>
#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;
}

Выше код не протестирован!

4
27.01.2020, 22:00

Ну тогда, если предположить, что инструктор хочет, чтобы люди читали источник, а не просто вырезали и вставляли из интернета, это, вероятно, хорошо продуманное задание. (Тем не менее, код ядра linux не очень приятен для чтения. Убедитесь, что знаете, как использовать яйца, потому что часто приходится отслеживать макросы на трех уровнях глубоко, чтобы увидеть, что происходит.)

.
0
27.01.2020, 22:00

Теги

Похожие вопросы