Как передать параметры в функцию asmlinkage? - PullRequest
0 голосов
/ 29 октября 2019

Я хочу добавить документацию по системному вызову, и у меня есть одна функция asmlinkage. Функция должна принимать 2 параметра. Эти параметры поступают из документации, которую я называю системным вызовом. Ниже я показал документы c:

#include <stdio.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <unistd.h>

int main(int argc,char*argv[])
{
    long int amma = syscall(335,argc,argv);
    printf("System call functions returned %ld\n", amma);
    return 0;
}

Как видите, я хочу передать массивы argc и argv char для выполнения некоторых файловых операций.

Сначала я написал asmlinkageвот так:

asmlinkage long function(int argc,char *argv[]){
  if(argc==2) 
       printk(KERN_INFO "Hello world"); // but it can not take argc
} 

Кроме того, я добавил в строку к syscalls.h:

asmlinkage function(int,char*[]);

Затем я правильно скомпилировал, но когда я начал запускать свой код в пространстве пользователя, мой системный вызов был убит.

Я нашел ссылку на этом сайте, но не смог ее скомпилировать. Владелец темы использовал "SYSCALL_DEFINE", но я столкнулся со многими ошибками кода, которые я не мог понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...