onde é o código fonte do make_request_fn no kernel do linux

1

no meu estudo e examino o código do kernel do linux que encontrei com a função make_request_fn . em este link diz que esta definição de tipo de função está em include / linux / blkdev.h linha 211 :

typedef void (make_request_fn) (struct request_queue *q, struct bio *bio);

mas não mencionou onde está sua implementação como código-fonte em um arquivo .c. minha pergunta é onde está esse código fonte da função?

    
por mR.aTA 24.12.2015 / 12:53

2 respostas

3
typedef void (make_request_fn) (struct request_queue *q, struct bio *bio);

Esta não é uma declaração de função . É a definição do tipo de função . Posteriormente no mesmo arquivo inclua / linux / blkdev.h, linha 299 , o mesmo nome recebe o campo em request_queue structure.

E nos drivers de arquivo / md / bcache / request.c na linha 1140 , é atribuída a função flash_dev_make_request a este campo, o que faz você pensar que chama a função make_request_fn() , mas realmente chama flash_dev_make_request() .

É realmente uma forma básica de fornecer encapsulamento e polimorfismo e um modelo OOP realmente básico em C.

    
por 24.12.2015 / 13:37
0

Parece que diferentes versões do kernel têm layout de função diferente. Eu estou trabalhando no kernel Linux 4.9. make_request_fn é inicializado pela função blk_queue_make_request () em blk-core.c.

    
por 03.12.2017 / 15:13