1@startuml 2 3participant arm_io_storage 4participant io_storage 5participant io_fip 6participant io_memmap 7 8 -> arm_io_storage : arm_io_setup() 9 10group io dev registration 11 12arm_io_storage -> io_fip : register_io_dev_fip(&fip_dev_con) 13io_fip -> io_storage : io_register_device(&dev_info_pool[]) 14note over io_storage 15 devices[dev_count] = (fip_)dev_info_pool 16 dev_count++ 17end note 18 19arm_io_storage -> io_memmap : register_io_dev_memmap(&memmap_dev_con) 20io_memmap -> io_storage : io_register_device(&memmap_dev_info) 21note over io_storage 22 devices[dev_count] = memmap_dev_info 23 dev_count++ 24end note 25 26arm_io_storage -> io_storage : io_dev_open(fip_dev_con, NULL, fip_dev_handle) 27 io_storage -> io_storage : dev_open(dev_con, dev_spec, handle) 28activate io_storage 29opt dev_open() on fip device 30 io_storage -> io_fip : fip_dev_open(dev_spec, dev_info) 31 note over io_fip 32 dev_info = one of the 33 "fip_dev_info" from 34 dev_info_pool[] 35 end note 36end opt 37deactivate io_storage 38 39 40arm_io_storage -> io_storage : io_dev_open(memmap_dev_con, NULL, memmap_dev_handle) 41io_storage -> io_storage : dev_open(dev_con, dev_spec, handle) 42activate io_storage 43opt dev_open() on memmap device 44 io_storage -> io_memmap : memmap_dev_open(dev_spec, dev_info) 45 note over io_memmap 46 dev_info = memmap_dev_info 47 end note 48end opt 49deactivate io_storage 50 51end group 52@enduml 53