Releases: nanovms/nanos
Releases · nanovms/nanos
0.1.23: ap initialization and per-cpu structures (#1061)
This is the union of the mpinit branch, the addition of per-CPU data structures (to which the various stacks and contexts have been migrated for the most part) and other ingredients for the ongoing SMP work. This seemed as good a point as any for checkpointing into the mainline; SMP is disabled by default, and none of the AP initialization code is called. However, AP bringup can be tested out by adding "-smp n" to the qemu command line (where n is the total number of cpus) and defining SMP_TEST in the build. An unrelated issue was found in the delivery of sigsegv within the unix fault handler. The fault handler was delivering the signal and then calling thead_yield - and in turn runloop - from within an interrupt context. This has been changed to allow the fault handler to exit gracefully while being assured that the signal will be delivered on return from exception handling. Please note that an issue arose in the macos/clang build which leads to incorrect construction of IDT tables. A hack (making write_idt noinline) was added as a temporary workaround, but no cause has been isolated as of this point. See #1060 for details. Co-authored-by: convolvatron <[email protected]>
flock, vdso, rt_sigtimedwait, signalfd
signalfd(2) support (#1048) support for signalfd(2) * The notify_set has uses outside of the context of poll waiters. In order to use it for signalfd notifications, the eventmask was expanded to 64-bits. * State and events for fds (fdescs) were previously process-wide. However a signalfd, which may be used in any thread in a process, may reflect state that is specific to a particular thread (e.g. for a signal that is delivered at the thread (not thread group / process) level). As such, the poll waiters now specify the blocking thread when checking for fdesc events. event_handlers also now take an optional thread argument so that posted events are only relevant if the collecting waiter is blocked on behalf of the specified thread. * sigstate_flush_queue was broken, causing an assertion failure if a thread exited without handling all pending signals
perf improvements, arg0 fixes; initial ftrace, js fixes
cpuid check for rdseed/rdrand on init only (#1013) * cpuid check for rdseed/rdrand on init only * explicit initializations
initial t2 support
0.1.20 trivial: mmap runtime test was missing from runtime-tests rule (#976)
capset/caget stubs; sendfile fixes; table log fixes; sigsegv;
SIGSEGV support. Includes: (#964) * SIGSEGV support. Includes: - raise SIGSEGV from mmap fault handler - add ucontext save/restore to signal delivery/return code - update signal runtime test with SIGSEGV test * bugfix for sig_debug call in rt_sigreturn * some reorganization of page fault handler, and bugfix for field ordering in struct sigcontext * add CR2 to frame.h, and save on interrupt * send SEGV_MAPERR anytime we can't find a vmap on fault
initial signals; monotonic; readv/writev
getsockopt(2): add stub handler for SO_SNDBUF This is needed by Vert.x (ticket #824). Closes #853.