Ethernet device polling(6)

SYSINIT()について見ていく。
init_device_poll()を登録している所を読んでみる:

SYSINIT(device_poll, SI_SUB_CLOCKS, SI_ORDER_MIDDLE, init_device_poll, NULL);

5.3. Using SYSINITによると、引数はidentify the particular function dispatch data, the subsystem order, the subsystem element order, the function to call, and the data to pass the functionの順に並んでいる。

なので、device_pollがidentify、SI_SUB_CLOCKSがsubsystem order、SI_ORDER_MIDDLEがsubsystem element order、init_device_pollがfunction、NULLがargになっている、はず。

sys/kernel.hに定義されているenum sysinit_sub_id(=subsystem order)の順に登録されたエントリが実行される。
同一subsystem内のelementの実行順序はenum sysinit_elem_order(=subsystem element order)に設定された順序で実行される。

なので、init_device_pollはVFSサブシステムの後、CLOCKサブシステムの最後、CLISTサブシステムの直前に実行される、はず。