Como a chamada async_port_probe () funciona no kernel do linux?

1

Para entender o processo de enumeração de dispositivo SATA eu estava estudando o driver / ata / ata_piix.c que está mostrando como driver de host SATA para o meu sistema na saída do comando lspci .

00:1f.2 IDE interface: Intel Corporation NM10/ICH7 Family SATA Controller [IDE mode] (rev 01)
Subsystem: Elitegroup Computer Systems Device 2672
Kernel driver in use: ata_piix
Kernel modules: pata_acpi

O AFAIK, controlador de host SATA é um dispositivo PCI conectado ao barramento PCI. Agora, quando o método de teste de ata_piix.c for executado, ele inicializará o controlador Host e muitas outras sequências de inicialização serão feitas na chamada do probe. No final do método de teste abaixo, execute:

/* perform each probe asynchronously */                                 
for (i = 0; i < host->n_ports; i++) {                                   
            struct ata_port *ap = host->ports[i];                           
            async_schedule(async_port_probe, ap);                           
    }    

Então, de acordo com minha compreensão, a chamada para aync_schedule() chamará o método de sondagem dos dispositivos SATA conectados às portas HOST uma a uma. Abaixo estão algumas das minhas consultas

  1. O meu entendimento acima está correto? É assim que funciona a enumeração de dispositivos SATA, se não, então, sugerir como o processo de enau- O dispositivo SATA é manipulado pelo kernel do Linux.
  2. Por favor, indique como exatamente aync_schedule() funciona?
  3. Se ata_piix.c foi usado como driver de kernel para o controlador SATA, por que o módulo Kernel usado para o dispositivo está sendo exibido como pata_acpi na saída do comando lspci ?
por Hemant 25.12.2015 / 06:03

0 respostas