Hello, Yang, Nice to hear from you again and it's a great work. We'd like you to talk about your work at NuttX 2020 in Tokyo.
https://nuttx.events/call-for-participation/ Regards, Masayuki On 2020/02/19 15:09, "Yang Chung Fan" <sonic.tw...@gmail.com> wrote: Hi, I have created a x86-64 port of Nuttx (tested with Xeon 2650 v4) along with a Linux compatibility layer for my research. I would like to contribute the research artifacts to the upstream Nuttx. I hosted the current code at github: https://github.com/sonicyang/cRTOS The basic idea of my work is to run Nuttx and Linux side by side with Jailhouse (or any other real-time hypervisor). The Nuttx executes a process with handle the system calls. If the system call does not exist, delegate to Linux. Let Linux do the work for you. (Of course, due to the semantics of system calls, some must be done in Nuttx, e.g. clone(2)) Features high lights * x86-64 port with MMU support * Jailhouse hypervisor support * Extended nanosecond clock accuracy * Linux compatibility layer with system calls * fork/clone support for processes. * Remote exec for loading Linux ABI binaries * Remote system call support for non-existing system calls. Some problem and questions for me to do this. Questions: * Besides the code formatting, another things I should do to my code? * Any suggestions on how do I submit patch for this kind of large piece of work? * I have modified some internal parts of Nuttx, e.g. 16550 driver and gran_allocator, etc. for extending their features and bug fix. Should I submit them separately? Problems: * There is code stolen from Linux(GPL) header and Jailhouse(GPL/MIT) repo. I do think this cause a license conflict. (I have limited the GPL affected file as 1) (As I remembered, I only used MIT code from Jailhouse). * Implementation is ugly. The x86-64 port is tightly coupled with Linux compatibility layer and MMU support. * Only Jailhouse support. (Theoretically, because jailhouse is a thin partitioning hypervisor, this should also work directly on the actual hardware.) Someone need to write a bootloader or multiboot2 support for it. * It is based on Nuttx 7.27, a bit old. * The commit log is ugly and long, spanning the whole year 2019. I hope someone can give me instructions to upstream this work. Any suggestions are welcome. The research result is being published as a paper in ACM VEE2020, which will be held next month in Switzerland. DOI: https://doi.org/10.1145/3381052.3381323 (should be active after the conference 3/17/2020). I will find somewhere legal to host the paper for everyone. In short words, this method do better than most of existing Linux real-time solutions while not losing the compatibility with Linux. -- Yang Chung Fan (楊宗凡) (ヤン ゾン ファン) Member of Softlab, Tsukuba University , Japan Email: sonic.tw...@gmail.com