Hi, I was doing some testing with the 3rd party FFAT file system which multiplexes clients accessing the file system. This was done in base-hw on release 15.11.
The first client connected to the file system as expected and two files were read and processed. When the second client attempted to make a connection to the Block service, a "could not open block connection" error was issued by the disk_initialize method in diskio_block.cc. (partial log below).
The Block service is provided by an sd_card driver (identical to the omap4 driver for the Panda board). Based on my limited understanding of the Genode architecture, I would think that is the correct behavior since the first client is still connected and that the a multiplexer for the service needs to be provided.
If that is correct, the FFAT file system effectively does not multiplex client connections in a useful manner, for this scenario. How would one go about doing that?
Bob Stewart
[init -> pruss_drv] void init_libc_ffat(): using the libc_ffat plugin [init -> pruss_drv] --- am33xx PRU driver --- [init -> pruss_drv] PRUSS quota super period 1000000 [init -> pruss_drv] PRUSS quota 199981 [init -> motor_ctl] --- Motor Control application starting --- [init -> Autopilot] void init_libc_ffat(): using the libc_ffat plugin [init -> Autopilot] --- Autopilot application starting --- [init -> sd_card_drv] CID: 0x1d414453 0x44202020 0x02b16703 0xea00d927 [init -> sd_card_drv] RCA: 0x59b4 Quota exceeded! amount=24576, size=12288, consumed=24576 [init -> sd_card_drv] Block::Omap3_driver::Omap3_driver(bool): SDCard driver getting m mc1 ready with dma 0 [init -> sd_card_drv] SD card detected [init -> sd_card_drv] capacity: 60303 MiB [init -> pruss_drv] Loaded PRU-0 program 123 words [init -> pruss_drv] Loaded PRU-1 program 337 words [init -> Autopilot] opening file /Autopilot/ap_config.xml [init -> Autopilot] could not open block connection [init -> Autopilot] No file system available [init] virtual void Genode::Child_policy::exit(int): child "Autopilot" exited with exi t value -1 [init -> motor_ctl] Config not set in time [init] virtual void Genode::Child_policy::exit(int): child "motor_ctl" exited with exi t value -2