devices/rtdmnet.c : abuse RTDM api to allow sendmsg and recvmsg to be called indirectly from userland cobalt process ioctl, while rtdm_socket is created from a kernel thread.
/* $Id$ */
digraph slaveconf {
node [fontname="Helvetica"]
edge [fontname="Helvetica", fontsize="12"]
start
start -> enter_init [weight=10]
enter_init [shape=point, label=""]
enter_init -> init [weight=10]
reconfigure [shape=point, label=""]
reconfigure -> enter_init [label="Config\ndetached"]
init [style="bold"]
init -> enter_clear_sync [label="No FMMUs"]
init -> clear_fmmus [weight=10]
clear_fmmus
clear_fmmus -> enter_clear_sync [weight=10]
enter_clear_sync [shape=point, label=""]
enter_clear_sync -> enter_dc_clear_assign [label="No SMs"]
enter_clear_sync -> clear_sync [weight=10]
clear_sync
clear_sync -> enter_dc_clear_assign [weight=10]
enter_dc_clear_assign [shape=point, label=""]
enter_dc_clear_assign -> enter_mbox_sync [label="No DC\nsupport"]
enter_dc_clear_assign -> dc_clear_assign [weight=10]
dc_clear_assign
dc_clear_assign -> dc_read_offset [weight=10]
dc_read_offset
dc_read_offset -> dc_write_offset [weight=10]
dc_write_offset
dc_write_offset -> enter_mbox_sync [weight=10]
enter_mbox_sync [shape=point, label=""]
enter_mbox_sync -> end [label="INIT\nrequested"]
enter_mbox_sync -> enter_boot_preop [label="No mailboxes"]
enter_mbox_sync -> mbox_sync [weight=10]
mbox_sync
mbox_sync -> enter_boot_preop [weight=10]
enter_boot_preop [shape=point, label=""]
enter_boot_preop -> boot_preop [weight=10]
boot_preop [style="bold"]
boot_preop -> end [label="PREOP\nor BOOT\nrequested"]
boot_preop -> enter_sdo_conf [weight=10]
enter_sdo_conf [shape=point, label=""]
enter_sdo_conf -> enter_pdo_sync [label="No config\nattached"]
enter_sdo_conf -> enter_pdo_conf [label="No SDOs\nconfigured"]
enter_sdo_conf -> sdo_conf [weight=10]
sdo_conf
sdo_conf -> reconfigure
sdo_conf -> enter_pdo_conf [weight=10]
enter_pdo_conf [shape=point, label=""]
enter_pdo_conf -> pdo_conf [weight=10]
pdo_conf
pdo_conf -> reconfigure
pdo_conf -> enter_pdo_sync [weight=10]
enter_pdo_sync [shape=point, label=""]
enter_pdo_sync -> enter_fmmu [label="No PDO SMs"]
enter_pdo_sync -> pdo_sync [weight=10]
pdo_sync
pdo_sync -> enter_fmmu [weight=10]
enter_fmmu [shape=point,label=""]
enter_fmmu -> enter_safeop [label="No config\nattached"]
enter_fmmu -> enter_dc_cycle [label="No FMMUs\nconfigured"]
enter_fmmu -> fmmu [weight=10]
fmmu
fmmu -> enter_dc_cycle [weight=10]
enter_dc_cycle [shape=point,label=""]
enter_dc_cycle -> reconfigure
enter_dc_cycle -> dc_cycle [weight=10]
enter_dc_cycle -> enter_safeop [label="DC not\nconfigured"]
dc_cycle
dc_cycle -> reconfigure
dc_cycle -> dc_start [weight=10]
dc_start
dc_start -> reconfigure
dc_start -> dc_assign [weight=10]
dc_assign
dc_assign -> enter_safeop [weight=10]
enter_safeop [shape=point,label=""]
enter_safeop -> safeop [weight=10]
safeop [style="bold"]
safeop -> end [label="SAFEOP\nrequested"]
safeop -> op [weight=10]
op [style="bold"]
op -> end
end
}