summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-17Replace "awaken" with "awoken"Richard Braun
See https://www.merriam-webster.com/words-at-play/usage-awaken-awoken-awakened.
2019-01-17kern/sleepq: fix wake-up chainingRichard Braun
Thanks to Simon Venken for reporting this issue.
2019-01-17test/test_sleepq_broadcast: new moduleRichard Braun
2019-01-10test/test_semaphore: new moduleRichard Braun
2019-01-10kern/semaphore: reworkRichard Braun
The previous implementation, which uses a combination of fast and slow paths around accessing an atomic integer, suffers from a bug triggered when two or more posts are performed back-to-back, without a waiter decrementing the semaphore value in between. The first post would be the only one signalling a waiter. In addition, having a fast path that expects the absence of waiters probably doesn't make sense, as semaphores are expected to be used for signalling threads. As a result, it was decided to remove the fast path altogether, and protect the semaphore value with sleep queues. Finally, as part of the rework, semaphores now have a user-defined maximum value, in order to make the implementation of, e.g. wrappers for binary semaphores, convenient. Thanks to Simon Venken for reporting the bug.
2019-01-10kern/sleepq: update acquire/lend documentationRichard Braun
2019-01-10New EOVERFLOW error codeRichard Braun
2019-01-07kern/cbuf: update from upstreamRichard Braun
2018-11-21kern/turnstile: fix assertionRichard Braun
Commit 5f202c9f744a5d9c5b751038edd2379b3d244227 reworked the way some assertions were performed, and introduced a mistake in an assertion in the turnstile module.
2018-11-17kern/thread: fix suspend on dead threadsRichard Braun
2018-11-17kern/turnstile: improve commentsRichard Braun
2018-11-12x86/boot: work around an SMP-related warningRichard Braun
2018-11-12kern/rdxtree: fix warning when assertions are disabledRichard Braun
2018-11-12tools/build_configs.py: update compiler-related option namesRichard Braun
Commit a18a9d0cc0232dc151cef3d2d61807182ef7f6ea renamed options related to the compiler, but the configuration checking script was not updated with the new names. Fix that now.
2018-11-05kern/thread: implement suspend/resume operationsAgustina Arzille
2018-09-28Makefile: explain the purpose of sorting initialization operationsRichard Braun
2018-09-02.gitignore: add intermediate xml asciidoc filesRichard Braun
2018-08-14tools/build_configs.py: generate the test set dynamicallyRichard Braun
2018-08-12kern/thread: make thread-specific data optionalRichard Braun
2018-08-12kern/mutex/mutex_plain: fix macro namesRichard Braun
2018-08-12kern/rcu: explain the need for separate work/reader window flipsRichard Braun
2018-08-04x86/cpu: fix data/stack alignmentRichard Braun
2018-08-04x86/cpu: improve low level code clarityRichard Braun
Replace magic numbers with macros isolating the computation of offsets in exception frames. The latter are reworked as arrays of words.
2018-07-31kern/rcu: add TODO entryRichard Braun
2018-07-30x86: use the uart0 console when testing with QEMURichard Braun
The UART console allows using a bigger screen as well as easy copy/pasting the output.
2018-07-30x86/strace: align symbol names in backtracesRichard Braun
2018-07-30tools/gen_symtab.py: fix input parsingRichard Braun
2018-07-30kern/symbol: work around clang aggressive optimization behaviorRichard Braun
2018-07-30tools/gen_symtab.py: put symbol names in the symbol table sectionRichard Braun
GCC apparently reserves memory for all symbol names in the .rodata section which meant adding symbol names would reuse those without changing the size of the .rodata section. That's not the case with Clang.
2018-07-30kern/log: minor changeRichard Braun
Insignificant coding style fix.
2018-07-30Rework assertive functionsRichard Braun
Instead of combining assertions and checking into single functions, rework those into pure checking functions usable with assert(). Those functions were introduced because of warnings about unused functions/variables caused by an earlier implementation of assert().
2018-07-25kern/{fmt,shell}: update from upstreamRichard Braun
The shell module has been "objectified" and now supports multiple instances with shareable command sets.
2018-07-10Makefile: print architecture-specific helpRichard Braun
2018-07-10x86/lapic: fix compiler warningsRichard Braun
2018-07-10x86: add portable architecture-specific qemu make targetRichard Braun
This target makes running QEMU simpler on non-x86 hosts.
2018-07-10kern/sleepq: make disabling interrupts optionalRichard Braun
Commit d2a89f7f6e976d022527c2a5a1c75268aab8cd49 changed sleep queues to allow semaphores to be signalled from interrupt handlers, but this implied disabling interrupts for all synchronization objects, and most of them do not require interrupts to be disabled. The sleep queue interface is augmented with interrupt-related versions.
2018-07-10kern/panic: remove initialization operationRichard Braun
Maintaining correct dependencies for the panic function is too complicated. It may be used very early, but would depend on the console, which is normally available quite late during initialization. Instead, the behavior of panic is now "best effort", i.e. if called at a time where it works, good, otherwise, the behavior is undefined, but should result in a freeze or a reset most of the time.
2018-07-10x86/cpu: optimize interrupt handlingRichard Braun
Now that exceptions and interrupts are clearly separated, stack switching on an interrupt is unconditional.
2018-07-10x86/cpu: fix excetpion handling on i386Richard Braun
2018-07-08x86/pmu_intel: use the compiler popcount built-inRichard Braun
2018-07-08Make linking against libgcc a global requirementRichard Braun
Linking against libgcc was made a per-architecture option for convenience reasons, an in particular because the kernel didn't have support for the red zone required by the AMD64 ABI. But lacking the compiler companion library proved to be problematic early after, so red zone support was implemented, and libgcc is now unconditionnally linked again.
2018-07-08x86/cpu: add red zone supportRichard Braun
Supporting the red zone is required for full ABI compliance, and in particular to safely link against libgcc.
2018-07-08kern/latomic: fix circular inclusionsRichard Braun
2018-07-07x86/cpu: improve CPU flags handlingRichard Braun
2018-07-07x86/cpu: use atomic operations for CPU boot synchronizationRichard Braun
2018-07-07x86/{boot,cpu}: rework AP boot stack managementRichard Braun
2018-07-07x86/cpu: turn cpu_delay into a compiler barrierRichard Braun
2018-07-07x86/boot: turn some far returns into far jumpsRichard Braun
2018-07-07kern/thread: add thread name accessorRichard Braun
2018-07-07x86: refactor interrupt/exception handlingRichard Braun
This commit merges the trap module into the cpu module in order to solve interface problems caused by the degree to which those two modules are actually coupled, i.e. it just makes a lot more sense to not separate them at all. The cpu module is also internally reworked with improved object and method definitions, that clarify the double fault handling code, among other things.