| @startuml |
| |
| participant arm_io_storage order 1 |
| participant io_storage order 2 |
| participant io_fip order 3 |
| participant io_memmap order 4 |
| |
| -> arm_io_storage : arm_io_setup() |
| |
| group io dev registration |
| |
| arm_io_storage -> io_fip : register_io_dev_fip(&fip_dev_con) |
| io_fip -> io_storage : io_register_device(&dev_info_pool[]) |
| note over io_storage |
| devices[dev_count] = (fip_)dev_info_pool |
| dev_count++ |
| end note |
| |
| arm_io_storage -> io_memmap : register_io_dev_memmap(&memmap_dev_con) |
| io_memmap -> io_storage : io_register_device(&memmap_dev_info) |
| note over io_storage |
| devices[dev_count] = memmap_dev_info |
| dev_count++ |
| end note |
| |
| arm_io_storage -> io_storage : io_dev_open(fip_dev_con, NULL, fip_dev_handle) |
| io_storage -> io_storage : dev_open(dev_con, dev_spec, handle) |
| activate io_storage |
| opt dev_open() on fip device |
| io_storage -> io_fip : fip_dev_open(dev_spec, dev_info) |
| note over io_fip |
| dev_info = one of the |
| "fip_dev_info" from |
| dev_info_pool[] |
| end note |
| end opt |
| deactivate io_storage |
| |
| |
| arm_io_storage -> io_storage : io_dev_open(memmap_dev_con, NULL, memmap_dev_handle) |
| io_storage -> io_storage : dev_open(dev_con, dev_spec, handle) |
| activate io_storage |
| opt dev_open() on memmap device |
| io_storage -> io_memmap : memmap_dev_open(dev_spec, dev_info) |
| note over io_memmap |
| dev_info = memmap_dev_info |
| end note |
| end opt |
| deactivate io_storage |
| |
| end group |
| @enduml |