Punto de entrada de controlador de dispositivo de
Finalidad
Graba datos de vuelco del sistema en un dispositivo.
Sintaxis
Parámetros
| Elemento | Descripción |
|---|---|
| devno | Especifica el números de dispositivo mayor y menor. |
| uiop | Apunta a la estructura uio que describe el área de datos o áreas que se van a volcar. |
| cmd | El parámetro de la función de vuelco de kernel que especifica la operación que se va a realizar. |
| arg | Parámetro del llamante que especifica la dirección de un bloque de parámetros asociado con el mandato de volcado del kernel. |
| chan | Especifica el número de canal. |
| ext | Especifica el parámetro de extensión. |
Descripción
La rutina de volcado del kernel llama al punto de entrada dddump para configurar y enviar solicitudes de vuelco al dispositivo. La rutina dddump es opcional para un controlador de dispositivo. Sólo es necesario cuando el controlador de dispositivo da soporte a un dispositivo como destino para un posible vuelco de kernel.
Si este es el caso, es importante que el estado del sistema cambie lo menos posible al realizar el vuelco. Como resultado, la rutina dddump debe utilizar la cantidad mínima de servicios al grabar los datos de vuelco en el dispositivo.
El parámetro cmd puede especificar cualquiera de los siguientes mandatos de vuelco:
| mandato DUMP | Descripción |
|---|---|
| DUMPINIT | Inicialización de un dispositivo en preparación para dar soporte a un vuelco del sistema. La instancia de dispositivo especificada debe haberse abierto anteriormente. El parámetro arg apunta a una estructura dumpio_stat , definida en /usr/include/sys/dump.h. Se utiliza para devolver el estado específico del dispositivo en caso de error. La rutina dddump debe marcar todos los códigos y datos que el controlador de dispositivo utiliza para dar soporte a la escritura de volcado. Esto es necesario para evitar un error de página al realizar realmente una grabación de los datos de vuelco. (El código fijo debe incluir la rutina dddump .) El servicio de kernel pin o pincode se puede utilizar para este propósito. |
| DUMPQUERY | Determina el número máximo y mínimo de bytes que se pueden transferir al dispositivo en un mandato DUMPWRITE . Para los vuelcos de red, también se envía la dirección de la rutina de grabación utilizada en la transferencia de datos de vuelco al dispositivo de vuelco de red. El parámetro uiop no se utiliza y es nulo para este mandato. El parámetro arg es un puntero a una estructura dmp_query , tal como se define en el archivo /usr/include/sys/dump.h . La estructura dmp_query contiene los campos siguientes:
El mandato DUMPQUERY devuelve la información de tamaño de transferencia de datos en la estructura dmp_query al que apunta el parámetro arg . A continuación, la función de volcado del kernel utiliza un almacenamiento intermedio entre los tamaños mínimo y máximo de transferencia (incluido) al grabar datos de volcado. Si el almacenamiento intermedio no es el tamaño encontrado en elmax_tsize, entonces su tamaño debe ser un múltiplo del valor en elmin_tsize:NONE. Los 2min_tsizey el campomax_tsizepuede especificar el mismo valor. |
| DUMPSTART | Suspende la actividad actual del dispositivo y proporciona cualquier configuración del dispositivo que sea necesaria antes de recibir un mandato DUMPWRITE . El parámetro arg apunta a una estructura dumpio_stat , definida en /usr/include/sys/dump.h. Se utiliza para devolver el estado específico del dispositivo en caso de error. |
| DUMPWRITE | Graba datos de vuelco en el dispositivo de destino. La estructura uio al que apunta el parámetro uiop especifica el área de datos o áreas que se deben grabar en el dispositivo y el desplazamiento del dispositivo de inicio. El parámetro arg apunta a una estructura dumpio_stat , definida en /usr/include/sys/dump.h. Se utiliza para devolver el estado específico del dispositivo en caso de error. El código para el mandato DUMPWRITE debe minimizar su dependencia de los servicios del sistema, el envío de procesos y dichos servicios de interrupción como INTIODONA interrumpir interrupciones de hardware de dispositivo o de prioridad. Nota: El mandato DUMPWRITE nunca debe causar un error de página. Esto se asegura de la parte del llamante, ya que se ha determinado que las áreas de datos que se van a volcar están en la memoria. El controlador de dispositivo debe asegurarse de que todos sus accesos de código, datos y pila sean para la memoria fija durante su proceso de mandatos de DUMPINIT .
|
| DUMPEND | Indica que se ha completado el vuelco del kernel. Cualquier limpieza del estado del dispositivo debe hacerse en este momento. |
| DUMPTERM | Indica que el dispositivo especificado ya no es un dispositivo de destino de vuelco seleccionado. Si no hay ningún otro dispositivo soportado por esta rutina dddump que tenga un mandato DUMPINIT pendiente, el código DUMPTERM debe desmarcar los recursos que se hayan marcado cuando haya recibido el mandato DUMPINIT . (El servicio de kernel de unpin está disponible para desanclar la memoria.) El mandato DUMPTERM se recibe antes de que se cierre el dispositivo. |
| DUMBUD | Recibe el paquete de acuse de recibo para operaciones anteriores de DUMPWRITE a un controlador de dispositivo de comunicaciones. Si el controlador de dispositivo recibe el acuse de recibo dentro del tiempo especificado, devuelve un 0 y los datos de respuesta se devuelven a la función de volcado del kernel en el parámetro uiop . Si el controlador de dispositivo no recibe el acuse de recibo dentro del tiempo especificado, devuelve un valor de ETIMEDOUT. El parámetro arg contiene un valor de tiempo de espera en milisegundos. |
Entorno de ejecución
La operación DUMPINIT dddump sólo se llama en entorno de proceso . Las operaciones DUMPQUERY, DUMPSTART, DUMPWRITE, DUMPENDy DUMPTERM dddump se pueden llamar tanto en entorno de proceso como en entorno de interrupción.
Valores de retorno
El punto de entrada dddump indica una condición de error al llamante devolviendo un código de retorno distinto de cero.