rtapi_shmem - Funciones para administrar bloques de memoria compartida
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)
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. |
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.
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