Yang, Could you share more background information? we are very interesting the possibility to call Linux side API. For upstream, if each patch is small and independent, you can send PR directly to: https://github.com/apache/incubator-nuttx Or Greg could create a branch so you can do the work on that before it is ready.
Thanks Xiang On Wed, Feb 19, 2020 at 2:07 PM 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