Macro de linux

  
        

Primero eche un vistazo a la definición de macro __user:

#ifdef __CHECKER__ # define __user __attribute __ ((noderef, address_space (1))) Desde la definición de macro puede ver que la macro __CHECKER__ está configurada Bajo la condición, la definición de la macro __user es válida, y se puede ver claramente que la macro __CHECKER__ aparece como un mecanismo de inspección, por lo que podemos inferir que la macro __user debe utilizarse para verificar el uso de errores.

Y, de hecho, lo es, es usar la opción make C = 1 para compilar el núcleo /módulo, abrir la herramienta de comprobación de sintaxis estática para detectar posibles errores. Al mismo tiempo, se puede ver que no tiene efecto en la generación del archivo, solo para verificar la corrección gramatical.

Investigaciones adicionales encontraron que sparse es una herramienta de comprobación de sintaxis estática de C. Al compilar un kernel o compilar un módulo en Linux, puede llamar al código de comprobación disperso al agregar C = 1.

Además, la definición dispersa Unos pocos espacios de memoria, dispersos, definen varios espacios de direcciones para el kernel de Linux, el espacio del kernel es el predeterminado, el espacio de usuario es 1 y el intervalo de io es 2. Esto puede verificar si hay un problema con el código de la dirección de acceso. Incluyendo address_space (1) se refiere al espacio del usuario.

Por ejemplo, en la escritura del controlador, size_t hello_read (archivo struct * file, char __user * buff, size_t count, loff_t * offp) {return 0;}

Copyright © Conocimiento de Windows All Rights Reserved