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.