Controlador de diagnósticos

La función del controlador de diagnósticos se inicia cuando el usuario root especifica el mandato diag . Se pueden especificar como entrada varios distintivos que permiten que las operaciones se realicen directamente. Por ejemplo, un distintivo puede especificar que el sistema o un recurso determinado se va a probar o que el sistema se va a ejecutar de forma desatendida. Si no se especifican distintivos, el controlador de diagnósticos presenta menús para determinar lo que el usuario desea hacer.

Las clases de objetos de diagnóstico definen los recursos y las tareas disponibles con los que el controlador de diagnósticos puede trabajar. Los datos predefinidos en estas clases de objeto especifican varios atributos sobre los recursos y tareas que pueden estar disponibles en el sistema.

La clase de objeto Dispositivo personalizado (CuDv) contiene información que describe las instancias de recursos realmente definidas en el sistema. Una instancia de recurso definida puede tener o no un controlador de dispositivo correspondiente que se utiliza para controlarlo. Un recurso puede ser un bastidor, un cajón, un adaptador, un disco, una tarjeta de memoria, un chip de coma flotante, una placa, un bus, etc.

El controlador de diagnóstico es un programa controlado por datos. Utiliza la información que se encuentra en CuDv y en la clase de objeto Recursos de diagnóstico predefinidos (PDiagRes) para generar una lista de recursos soportados. Esta lista de recursos soportados se utiliza para crear el menú Selección de recursos.

El controlador de diagnósticos da soporte a la reconfiguración dinámica de procesadores actualizando el menú Selección de recursos si se produce una operación de reconfiguración mientras el controlador de diagnósticos está en ejecución.

Dada la selección del usuario desde el Menú de selección de recursos, el controlador de diagnósticos emplea la clase de objeto PDiagRes para determinar la Aplicación de diagnóstico (DA) adecuada para iniciar. El controlador de diagnósticos espera a que se complete el DA. La llamada al sistema de salida devuelve el estado de la aplicación de diagnóstico.

El controlador de diagnósticos utiliza una vista de todo el sistema de la configuración que permite al controlador de diagnósticos recorrer los recursos de prueba de la base de datos de configuración. Por ejemplo, si un recurso falla sus pruebas, el controlador de diagnósticos puede intentar probar otros recursos hasta que se haya aislado el problema. El controlador de diagnósticos comprende las dependencias entre los recursos. El término "recurso" se utiliza en un sentido genérico e incluye adaptadores, así como dispositivos de terminal.

El controlador de diagnósticos analiza las conclusiones realizadas por las aplicaciones de diagnósticos y genera un informe de problemas. El informe de problemas lista las unidades sustituibles localmente (FRU) que deben sustituirse, la probabilidad de anomalía asociada a cada FRU y la razón por la que se ha realizado el diagnóstico.

El controlador de diagnósticos graba su análisis en el directorio /etc/lpp/diagnostics/data, y el mandato diagrpt , o la tarea Visualizar resultados de diagnósticos anteriores , se puede utilizar en una fecha posterior para recuperar estos resultados.

Además, la notificación de problemas se puede enviar a programas externos registrados con el controlador de diagnósticos. El registro se realiza mediante objetos ODM en la clase PDiagAtt . Hay 2 posibles registros:

Para sistemas conectados a una Hardware Management Console:

PDiagAtt:
        DType = <fileset nickname>
        DSClass = ""
        attribute = "notify_service"
        value = ""
        rep = "s"
        DClass = ""
        DApp = <complete path to external notification program>

El programa especificado en DApp del atributo notify_service se invoca cuando el sistema está gestionado por una Hardware Management Console (HMC). El programa se invoca con el número de secuencia de registro de sucesos de diagnóstico de la conclusión de diagnóstico. La API de registro de sucesos de diagnóstico se puede utilizar para extraer los datos específicos del análisis de diagnóstico y realizar las notificaciones personalizadas.

El <apodo de conjunto de archivos> es cualquier serie de 15 caracteres (o menos) que representa qué conjunto de archivos envía esta stanza. Los diagnósticos no utilizan el apodo, pero se necesita un valor exclusivo por conjunto de archivos en DType para facilitar la instalación y actualización del atributo porque el mismo nombre de atributo se puede enviar en otros conjuntos de archivos. Por ejemplo, el conjunto de archivos devices.chrp.base.diag enviaría una stanza como:

PDiagAtt:
        DType = "DevChrBasDia"
        DSClass = ""
        attribute = "notify_service"
        value = ""
        rep = "s"
        DClass = ""
        DApp = /usr/lpp/diagnostics/bin/diagServiceEvent
Para sistemas no conectados a una Hardware Management Console:

PDiagAtt:
        DType = <fileset nickname>
        DSClass = ""
        attribute = "notify_extern"
        value = ""
        rep = "s"
        DClass = ""
        DApp = <complete path to external notification program>

El programa especificado en DApp del atributo notify_extern se invoca cuando el sistema no está gestionado por una Hardware Management Console (HMC). El programa se invoca con el número de secuencia de registro de sucesos de diagnóstico de la conclusión de diagnóstico. La API de registro de sucesos de diagnóstico se puede utilizar para extraer los datos específicos del análisis de diagnóstico y realizar las notificaciones personalizadas.

El <apodo de conjunto de archivos> es cualquier serie de 15 caracteres (o menos) que representa qué conjunto de archivos envía esta stanza. Los diagnósticos no utilizan el apodo, pero se necesita un valor exclusivo, por conjunto de archivos, en DType para facilitar la instalación y actualización del atributo porque el mismo nombre de atributo se puede enviar en otros conjuntos de archivos. Por ejemplo, el conjunto de archivos devices.chrp.base.diag enviaría una stanza como:

PDiagAtt:
        DType = "DevChrBasDia"
        DSClass = ""
        attribute = "notify_extern"
        value = ""
        rep = "s"
        DClass = ""
        DApp = /usr/lpp/diagnostics/bin/diagServiceEvent