FIO IOエンジンの全体の束をサポート - サポートされているすべてのエンジンがここに存在している:https://github.com/axboe/fio/tree/master/engines起動時にさまざまなioエンジンがどのようにロードされるのですか?
私はどのようにFIO作品とどのようにFIO負荷すべてのIOエンジンで捕まってしまったの内部を理解しようとしています。 https://github.com/axboe/fio/blob/master/engines/sync.c#L448
とfio_syncio_unregister
: https://github.com/axboe/fio/blob/master/engines/sync.c#L461
fio_syncio_register
を用い例sync.cレジスタ及び登録解除のために、それ自身を登録し、登録解除する方法を持っている参照たとえば
私の質問は、誰がこれらのメソッドを呼び出すのですか?
私はgdbの下FIOを実行しようとした答えを見つけるためには - fio_syncio_registerで、main関数にブレークポイントを置き、fio_syncio_registerは私に語ったとしても、メインの前に呼び出されることは__libc_csu_init
とは何かを持っているし、バックトレースは
(gdb) bt
#0 fio_syncio_register() at engines/sync.c:450
#1 0x000000000047fb9d in __libc_csu_init()
#2 0x00007ffff6ee27bf in __libc_start_main (main=0x40cd90 <main>, argc=2, argv=0x7fffffffe608, init=0x47fb50 <__libc_csu_init>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe5f8)
at ../csu/libc-start.c:247
#3 0x000000000040ce79 in _start()
私がいつかについて__libc_csu_init
と__libc_csu_fini
を読んで過ごし、__attribute__((constructor))
が飾られている方法についてのすべての単一の記述の会談は、メインの前に呼び出されますが、FIO sync.cの場合、私はfio_syncio_register __attribute__
誰かがこのフローの仕組みを理解するのを助けてくれますか?これを理解するために読まなければならない他の資料がありますか?
ありがとう
私はこれを理解したことがないでしょう。この努力のために大変ありがとうございます。 – nachiappan