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

Reply via email to