Adding new überApps¶
Integrating a new überApp into the micro-hypervisor requires the following integration pieces:
- Create directory for überApp functionality (e.g., uapp_newapp) within uapps directory
- uapp-newapp.c is used to perform the funcaitonality within a bool uapp_newapp_handlehcall(uhcall_function, uhcall_buffer, uhcall_buffer_len)
- Place header files in include as newapp.h. This header defines any data structures used for passing data, and a überApp ID (#define UAPP_NEWAPP_ACTION)
- To integrate the überApp add references in the following locations:
- Add an if(uapp_newapp_handlecall(r->r0, r->r1, r->r3)) conditional to core/ghcall.c to hook in the überApp runtime service processing
- Add an entry to the core/Makefile (uapp-newapp.o: ../uapps/uapp-newapp/uapp-newapp.c), and add the uapp-newapp.o to the core.bin: line.
- Add a test program that exercises your hypapp in rgapps/linux
- Create a directory for the test program (rgapp-newapp) that includes a Makefile and the testprogram (rgapp-newapp.c).
- In userspace, this test program will need to include uhcall.h, where the überApp is called using uhcall(UAPP_NEWAPP_ACTION, buf_ptr, sizeof(buf))
- Running userspace test programs.
- Load the kernel module (uhcallkmod in rgapps/linux/rgapp-uhcallkmod)
- Ensure the new device is read and writable from the calling applications (chmod +x /dev/uhcallkmod)
- Test program can now invoke überApp