Dynamic Loading of application
Hi everyone, Greetings, I'm just started with seL4. Current Progress: - I have built an application on top of seL4 as learning from tutorials, so this is my current design [seL4,My main_APP,App2,App1,App3] Here My main_App is my main application build on seL4 and App1, App2 and App3 are sub components link with My main_App.( Just like in Tutorial 4 of seL4). When i build and run , this is working fine, no issue with it. when i run make command first i build kernel then libraries, then App1 , App2, App3, then My main_app and in the end it generate a single image file to execute. My Question :- Can i dynamic load my sub components(App1, App2, App3) which is required by My_main_App in run time ? Can we do that in seL4 is yes then how ? i dont want my App1, App2 and App3 part of final image, I want to load them and run them separately using My_main _App? Thank you in Advance, Please Help. Regards, Aslam ALVI # " This e-mail and any attached documents may contain confidential or proprietary information. If you are not the intended recipient, you are notified that any dissemination, copying of this e-mail and any attachments thereto or use of their contents by any means whatsoever is strictly prohibited. If you have received this e-mail in error, please advise the sender immediately and delete this e-mail and all attached documents from your computer system." #
Hey Aslam, It is certainly possible to have dynamic loading of your child processes at runtime: but that would require a bit of work. As far as I can tell, you would need to use one of two approaches: (1) Include an initrd (initial ram-disk) and a filesystem driver in your root task image, and pack your user apps (app1, app2, etc) into the initrd. Then dynamically load your user apps from the initrd at runtime. (2) Include a disk driver and a filesystem driver in your root-task image. Then install your user apps on a physical disk. Then at runtime, use your disk driver and filesystem driver (embedded within your root task) to load your user apps from your physical disk. Approach #1 requires less work, and is slightly "cleaner" in the sense that it allows you to boot your final system in multiple stages and also to support diskless systems. Approach #1 allows you to defray some tricky design decisions. Both have tradeoffs. The main takeaway is that seL4 is a microkernel, and it does not provide you with drivers and it expects you to write the drivers to access your storage devices and the filesystems on those storage devices from scratch. In addition, you'll also need to design some kind of driver API/Framework before you can even begin to write your storage and filesystem drivers. There's a silver lining: by the end of this year, we should have published an extensible, fairly well generalized driver framework which you can just conform to in your implementation. But you'll still have to write the drivers for your target system though, sorry ;) -- Kofi Doku Atuah Kernel engineer DATA61 | CSIRO
participants (2)
-
ALVI Aslam (MORPHO)
-
Kofidoku.Atuah@data61.csiro.au