versiones usuario tipos que procesos modo informatica funciones existen c linux sockets linux-kernel timestamp

tipos - ¿Cómo acceder a la memoria kernel desde el programa de usuario en rt linux?



que versiones de kernel existen (1)

No se puede acceder directamente a la memoria kernel desde el espacio de usuario: debe usar algún tipo de API.

Usted puede:

  • Imprime la marca de tiempo a través de sysfs o debugfs y léala como archivo normal
  • Agregue syscall para que kernel regrese el valor actual de la marca de tiempo
  • Un montón de otras variantes locas como netlink socket o memoria compartida

comunicación entre el cliente y el servidor en rt linux. el cliente está enviando los datos y el servidor es el receptor. El AUD se utiliza para la comunicación entre el cliente y el servidor. Cuando el servidor (rt linux) recibe los datos del cliente, el núcleo debe detener lo que está haciendo y comenzar a ejecutar los datos recién recibidos. Quiero calcular el tiempo cuando la interrupción ocurre en kernel (timestamp). En rt-linux toda la operación del sistema operativo tiene lugar en kernel. Así que estoy calculando el tiempo de interrupción en el código fuente del kernel. Así que modifiqué el código fuente del kernel en la ubicación /usr/src/linux-version/net/core/dev.c como se muestra a continuación: Estoy calculando el tiempo y almacenando en un buffer skb.

// este código está en el nivel del controlador del dispositivo de red.

int netif_rx(struct sk_buff *skb) { __net_timestamp(skb);//I modify the code in kernel to get the timestamp and store in buffer }

// después de almacenar los datos en el búfer. Kernel lo enviará a las capas superiores como IP, UDP, INET y finalmente SOCKET del espacio del kernel.

pero quiero leer el paquete de marca de tiempo del espacio del kernel por el espacio de usuario. es decir, mi programa.

Estoy usando recvfrom api para leer los datos de kernel spacce (que está en la memoria del kernel)

PREGUNTA: ¿alguien podría decirme cómo acceder a la memoria del kernel que contiene los datos de marca de tiempo del programa de usuario?