rtapi_shmem

NOMBRE
SINTAXIS
ARGUMENTOS
DESCRIPCIÃN
CONSIDERACIONES EN TIEMPO REAL
VALOR DEVUELTO

NOMBRE

rtapi_shmem - Funciones para administrar bloques de memoria compartida

SINTAXIS

int rtapi_shmem_new(int key, int module_id, unsigned long int size)

int rtapi_shmem_delete(int shmem_id, int module_id)

int rtapi_shmem_getptr(int shmem_id, void **ptr)

ARGUMENTOS

key

Identifica el bloque de memoria. La clave debe ser distinta de cero. Todos los módulos que deseen usar la misma memoria deben usar la misma clave.

module_id

Identificador del módulo devuelto por una llamada previa a rtapi_init.

size

El tamaño deseado del bloque de memoria compartida, en bytes.

ptr

El puntero al bloque de memoria compartida. Tenga en cuenta que el bloque puede estar mapeado en una dirección diferente para diferentes módulos.

DESCRIPCIÃN

rtapi_shmem_new asigna un bloque de memoria compartida. key identifica el bloque de memoria y no debe ser cero. Todos los módulos que deseen acceder a la misma memoria debe usar la misma clave. module_id es la ID del módulo que está realizando la llamada (consulte rtapi_init). El bloque tendrá al menos size bytes, y puede ser redondeado. Asignar muchos bloques pequeños puede ser muy derrochador. Cuando un bloque particular se asigna por primera vez, los primeros 4 bytes están a cero. Asignaciones posteriores del mismo bloque por otros módulos o procesos no tocarán el contenido del bloque. Las aplicaciones pueden usar esos bytes para ver si necesitan que se inicialice el bloque, o si otro módulo ya lo hizo. En caso de éxito, devuelve una ID entera positiva, que se utiliza para todas las llamadas subsiguientes relacionadas con el bloque. En caso de fracaso devuelve un código de error negativo

rtapi_shmem_delete libera el bloque de memoria compartida asociado con shmem_id. module_id es la ID del módulo de llamada. Devuelve un código de estado.

rtapi_shmem_getptr establece *ptr para que apunte al bloque de memoria compartida asociado con shmem_id.

CONSIDERACIONES EN TIEMPO REAL

rtapi_shmem_getptr puede llamarse desde el código de usuario, código de inicio/limpieza, o tareas en tiempo real.

rtapi_shmem_new y rtapi_shmem_dete no pueden llamarse desde tareas en tiempo real

VALOR DEVUELTO