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.