Red de conocimiento informático - Aprendizaje de programación - Código fuente de IoStartPacket

Código fuente de IoStartPacket

La rutina Startio es el controlador de nivel más bajo.

El primer paso para que el administrador de entrada y salida llame al programador del controlador es cumplir con los requisitos de los dispositivos de entrada y salida. Iniciar la segunda fase del proceso. Cada controlador de dispositivo y rutina startio puede llamar a iostartpacket desde sus rutinas de lectura y escritura de despacho y, normalmente, un subconjunto del código de control de entrada/salida admitido en su rutina de control de dispositivo de despacho. La rutina iostartpacket maneja el dispositivo del dispositivo o la cola proporcionada por el sistema. Si la cola está vacía, se requiere inmediatamente la tecnología de manejo de rutinas startio del controlador.

Al llamar a la rutina de inicio del controlador, puede asumir que el dispositivo de destino no está ocupado. Esto se debe a que mi administrador/Australia solicitó una situación de inicio; ya sea el programador de un controlador llamado iostartPacket y la cola de dispositivos estaba vacía, o la rutina dpcforisr del controlador completó otra solicitud llamada iostartNextPacket para retirar la planificación futura.

Para las llamadas al controlador de dispositivo de más alto nivel en la rutina de inicio, el programador del controlador debe explorar y bloquear el búfer del usuario y, si es necesario, establecer una asignación de dirección de búfer válida en la cola de inicio diaria del grupo de expertos. Si el controlador de dispositivo de nivel superior establece entrada/salida directa (o ningún búfer o entrada/salida directa) al objeto del dispositivo, el controlador no puede retrasar la rutina startio que bloquea el búfer del usuario en el que se encuentra el contexto del subproceso para cada llamada a la rutina startio; = nivel_despacho es el siguiente.

Tenga en cuenta que cualquier rutina de inicio del controlador de acceso a la memoria intermedia debe estar bloqueada o asignada a la memoria del espacio residente del sistema y debe estar disponible en cualquier contexto de subproceso.