Linux 내장 nvme 드라이브 분석 장치 초기화
3323 단어 저장 장치
독점 발표 | Linux NVMe Driver 학습노트 대합집 linux 내장 원본 분석 - nvme 설비의 초기화 강세 회귀, Linux blk는 실력으로 자신이 약하지 않다는 것을 증명합니다!
드라이버 초기화
nvme_probe -> nvme_async_probe -> nvme_dev_add -> nvme_alloc_ns
브레이크 및 폴링
schedule_timeout과 mdelay의 차이scheduletimeout 함수 linux 시간 - 지연 및 시간 커널 시간 메커니즘 API의round_jiffies_relative
4.1버전의 핵에는 핵선 nvme 가 있습니다kthread, 1s 퀴즈를 담당하기 때문에 NVMe 디스크는 대기열이 완성되었는지 확인한다. 4.14버전의 메모리에 blkmq는poll 인터페이스를 추가했다. 이 기능은 함수
nvme_timeout
와 nvme_poll
로 대체되고 nvme_timeout
호출nvme_poll
은 현재 처리되지 않은 완성 대기열이 있는지 확인한다. 4.1버전nvme_timeout
은 현재의 Request를 직접 취소한다.static const struct blk_mq_ops nvme_mq_admin_ops = {
.queue_rq = nvme_queue_rq,
.complete = nvme_pci_complete_rq,
.init_hctx = nvme_admin_init_hctx,
.exit_hctx = nvme_admin_exit_hctx,
.init_request = nvme_init_request,
.timeout = nvme_timeout,
};
static const struct blk_mq_ops nvme_mq_ops = {
.queue_rq = nvme_queue_rq,
.complete = nvme_pci_complete_rq,
.init_hctx = nvme_init_hctx,
.init_request = nvme_init_request,
.map_queues = nvme_pci_map_queues,
.timeout = nvme_timeout,
.poll = nvme_poll,
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
wince 레지스트리 관련 토론2) 다른 메커니즘은 이전 메커니즘의 두 번의 가동이 필요한 단점을 피할 수 있다.하지만 단점도 있다.OEM(원시 장치 제조업체)은 OAL 레이어에서 Write Registry ToOEM and ReadRegistr...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.