Pregunta

Trato de escribir una llamada al sistema. Seguí estos pasos:

linux / arch / x86 / kernel / syscall_table_32.S ---->. largo sys mycall

Linux / include / linux / syscalls.h --------> asmlinkage int sys mycall (int i, int j);

linux / arch / x86 / include / asm / unistd_32.h ----> #define NR mycall 333

I cambiado Linux / Makefile para núcleo-y + = kernel / mm / fs / ipc / security / crypto / bloque / mycall /

He creado un directorio, llamado mycall. ----> Linux / mycall

Dentro de ese archivo, coloqué mycall.c:

#include <linux/kernel.h>
asmlinkageintsysmcall(int i,int j )
{
return i + j ;
}

6) i crear Makefile. ---> Linux / mycall / Makefile.

obj−y := mycall.o

A continuación, whrn de que este intento llamada al sistema, devuelve siempre -1. Estas líneas son mi código de prueba en el escritorio. testmycall.c

#include <stdio.h>
#include <sys/syscall.h>
#define __NR_mycall 333

int main(void)
{
int x1=10, x2=20, y ;
y = syscall (__NR_mycall, x1, x2 );
printf (”%d\n”,y );
return 0 ;
}

A continuación, i recompilar el kernel. Si i compilar el código, no hay nada malo. cuando ejecuto este programa, entonces no suma dos valores. Simplemente devuelve siempre -1. Lo que está mal con mi llamada al sistema? (Cuando me recompilar el kernel, el sistema no perdió el tiempo más de 3 segundos. Creo que aquí, podría haber un problema)

¿Fue útil?

Solución

recompilar el kernel y reiniciar el sistema. O se trata de un módulo del kernel?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top