Linux 커널에서 async_port_probe() 호출은 어떻게 작동합니까?

Linux 커널에서 async_port_probe() 호출은 어떻게 작동합니까?

SATA 장치 열거 프로세스를 이해하기 위해 명령 출력에 내 시스템의 SATA 호스트 드라이버로 나타나는 드라이버/ata/ata_piix.c를 살펴보았습니다 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

SATA 호스트 컨트롤러인 AFAIK는 PCI 버스에 연결된 PCI 장치입니다. 이제 ata_piix.c의 프로브 메서드가 실행되면 호스트 컨트롤러가 초기화되고 프로브 호출에서 다른 많은 초기화 시퀀스가 ​​완료됩니다. 프로브 메서드 끝에서 다음 코드를 실행합니다.

/* 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);                           
    }    

그래서 제가 이해한 바에 따르면 호출은 aync_schedule()호스트 포트에 연결된 SATA 장치에 대한 프로브 방법을 하나씩 호출하게 됩니다. 내 질문은 다음과 같습니다.

  1. 위의 이해가 정확합니까? 이는 SATA 장치 열거가 작동하는 방식이며, 그렇지 않은 경우 Linux 커널이 SATA 장치의 열거 프로세스를 처리하는 방식입니다.
  2. aync_schedule()정확히 어떻게 작동하는지 제안해주세요 .
  3. SATA 호스트 컨트롤러용 커널 드라이버로 사용되는 경우 ata_piix.c장치용 커널 모듈이 명령 pata_acpi출력 에 표시되는 이유는 무엇입니까 lspci?

관련 정보