Servicio de kernel

Atención: Este servicio no se debe utilizar porque no es seguro multiprocesador. En su lugar, se deben utilizar el temporizador del kernel base y los servicios de vigilancia.

Finalidad

Planifica una función que se debe llamar después de un intervalo especificado.

Sintaxis

#include <sys/types.h>
#include <sys/errno.h>
void timeout ( func,  arg,  ticks)
void (*func)();
caddr_t *arg;
int ticks;

Parámetros

Elemento Descripción
func Indica la función que se debe llamar.
arg Indica el parámetro que se debe suministrar a la función especificada por el parámetro func .
tictacs Especifica el número de marcas de temporizador que deben producirse antes de que se llame a la función especificada por el parámetro func . Se pueden producir muchas marcas de temporizador por segundo. La etiqueta HZ que se encuentra en el archivo /usr/include/sys/m_param.h se puede utilizar para determinar el número de marcas por segundo.

Descripción

El servicio tiempo de espera no forma parte del kernel. Sin embargo, es un servicio de compatibilidad que se proporciona en la biblioteca libsys.a . Para utilizar el servicio timeout , se debe enlazar una extensión de kernel con la biblioteca libsys.a . El servicio tiempo de espera , como los servicios de kernel asociados untimeout y timeoutcf, se puede enlazar y utilizar sólo en la parte marcada de una extensión de kernel o la mitad inferior de un controlador de dispositivo porque estos servicios utilizan la inhabilitación de interrupción para la serialización.

El servicio tiempo de espera planifica la función señalada por el parámetro func que se debe llamar con el parámetro arg después del número de marcas de temporizador especificadas por el parámetro Garrapatas . Utilice la rutina timeoutcf para asignar suficientes elementos de reclamo para el número máximo de salidas de tiempo activas simultáneas que espera.

Nota: Se debe llamar a la rutina timeoutcf antes de llamar al servicio de tiempo de espera .

Llamar al servicio de tiempo de espera sin asignar suficientes entradas de tabla de reclamo puede dar lugar a un pánico de kernel debido a la falta de elementos de tabla inmovilizados. El valor de una marca de temporizador depende de la capacidad del hardware. Puede utilizar la subrutina restimer para determinar la granularidad mínima.

No se permiten varias solicitudes tiempo de espera pendientes con los mismos parámetros func y arg .

El parámetro func

La función especificada por el parámetro func se debe declarar como se indica a continuación:

void func (arg)
void *arg;

Entorno de ejecución

La rutina tiempo de espera se puede llamar desde el entorno proceso o interrupción .

La función especificada por el parámetro func se llama en el entorno de interrupción. Por lo tanto, debe seguir los convenios para los manejadores de interrupciones.

Valores de retorno

El servicio tiempo de espera no tiene valores de retorno.