tengan sustantivo sujeto que predicado oraciones nucleo modificadores modificador juntos indirecto enseñar directo con como c assembly linux-kernel

sustantivo - oraciones con modificador directo e indirecto juntos



¿Para qué sirve el modificador ''asmlinkage''? (1)

He leído que se usa para funciones que implementan llamadas al sistema en Linux. Por ejemplo:

asmlinkage long sys_getjiffies( void ) { return (long)get_jiffies_64(); }

y que le dice al compilador que pase todos los argumentos de función en la pila. Pero, ¿no es ese el caso? Los argumentos de función generalmente se pasan presionándolos solo en la pila. ¿O es que nos estamos refiriendo a pasar argumentos de funciones a través de registros aquí?


Hay una FAQ :

La etiqueta de enlace intermedio es otra cosa que debemos observar acerca de esta simple función. Este es un #define para alguna magia gcc que le dice al compilador que la función no debe esperar encontrar ninguno de sus argumentos en los registros (una optimización común), sino solo en la pila de la CPU. Recuerde nuestra afirmación anterior de que system_call consume su primer argumento, el número de llamada del sistema, y ​​permite hasta cuatro argumentos más que se transfieren a la llamada al sistema real. system_call logra esta hazaña simplemente dejando sus otros argumentos (que se le pasaron en los registros) en la pila. Todas las llamadas al sistema están marcadas con la etiqueta asmlinkage, por lo que todas buscan en la pila argumentos. Por supuesto, en el caso de sys_ni_syscall , esto no hace ninguna diferencia, porque sys_ni_syscall no toma ningún argumento, pero es un problema para la mayoría de las otras llamadas al sistema. Y, debido a que verás un asmlinkage frente a muchas otras funciones, pensé que asmlinkage saber de qué se trataba.

También se usa para permitir llamar a una función desde archivos de ensamblaje.