summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-21Merge branch 'atomic_rework'Richard Braun
2018-04-21doc/intro(9): mention the supported data modelsRichard Braun
2018-04-21kern/atomic: reworkRichard Braun
This commit restricts atomic operations to 32-bit and 64-bit (when supported). It keeps a similar source interface, but adds restrictions on the supported types. The main drive behind this change is portability, and in particular, upcoming local atomic operations.
2018-04-21Fix atomic operations argument typesRichard Braun
In preparation of the rework of atomic operations, all atomic function calls are fixed to use fully supported, compatible types. This means that atomic operations ar erestricted to 32-bit and 64-bit, and that value types must be strictly compatible with pointer types.
2018-04-21x86: fix i386_defconfigRichard Braun
2018-04-19tools/build_configs.py: augment the small setRichard Braun
Add CONFIG_CC_EXE and CONFIG_64BITS to the small (default) set of options to test since they are among the most important options a developer should mechanically check when using the tool.
2018-04-19kern/atomic: remove shortcutsRichard Braun
These shortcuts just don't bring enough value.
2018-04-14tools/qemu.sh: only pass x15 as the kernel argument to QEMURichard Braun
This makes reading the command line easier in the kernel log.
2018-04-14kern/rcu: make the window check interval configurableRichard Braun
2018-04-14kern/atomic: fix consume memory orderRichard Braun
The consume memory order is known to be problematic in the C11 specification, and as a result, most compilers alias it to acquire. Based on the assumption that the kernel doesn't run on architectures with an Alpha-like memory model, the consume memory order was aliased to relaxed, letting the CPU identify data dependencies. But there may also be issues at compile time, making this hack is dangerous. As a result, the actual consume memory order as implemented by the compiler is now used to define the kernel consume memory order. See https://lwn.net/Articles/588300/.
2018-04-14Rename variables in function-like macrosRichard Braun
2018-04-14Fix left-over reserved identifiersRichard Braun
For some reason, commit be5b9d6ab9f7e7a81c367e4bb0823ba11f85940f didn't take care of all reserved identifiers.
2018-04-13kern/xcall: upgrade spurious interrupts to errorsRichard Braun
2018-04-13x86/lapic: fix inter-process interrupt generationRichard Braun
Make the lapic_ipi function interrupt-safe.
2018-04-09Make linking with libgcc a per-architecture optionRichard Braun
2018-04-08tools/qemu.sh: remove GRUB dependencyRichard Braun
This change makes QEMU directly boot the kernel, using the -kernel option.
2018-04-08x86: slightly improve linker scriptRichard Braun
2018-04-08Makefile: disable the build ID linker featureRichard Braun
2018-04-08Makefile: normalize linker options passingRichard Braun
2018-04-01tools/build_configs.py: add bulletin testRichard Braun
2018-04-01doc/intro(9): list kern/bulletinRichard Braun
2018-04-01Merge branch 'bulletin'Richard Braun
2018-04-01kern/bulletin: new moduleRichard Braun
2018-04-01kern/rcu: add assertion in rcu_deferRichard Braun
2018-04-01kern/{hash,list}: update from upstreamRichard Braun
This commit fixes undefined behavior in hash_str, and RCU linked list walking.
2018-03-21Fix builds with ClangRichard Braun
2018-03-20Makefile: force correct interpretation of / in assembly filesRichard Braun
2018-03-05tools/build_configs.py: fix filteringRichard Braun
2018-03-05tools/build_configs.py: style fixesRichard Braun
2018-03-03kern/spinlock: minor comment fixRichard Braun
2018-03-02kern/spinlock: fix and optimizeRichard Braun
Making the unlock operation block allows tricky deadlocks to occur in case a thread is interrupted right before announcing itself as the first waiter in the queue. Since locking is expected to block, the spinlock implementation is reworked to move the hand-off performed by the unlock operation into the lock operation. As a side effect, the common case of a single waiter is also optimized.
2018-03-02kern/spinlock: fix direct use of CONFIG_SPINLOCK_DEBUGRichard Braun
2018-02-24Merge branch 'build_configs_python3'Richard Braun
2018-02-24tools/build_configs.py: add TODO entry, style fixesRichard Braun
2018-02-24tools/build_configs.py: fix -l optionRichard Braun
2018-02-24tools/build_configs.py: break python2 compatibilityRichard Braun
2018-02-24tools/build_configs.py: improve pep8 and pylint complianceGabriel Ganne
pep8 fixes: * remove whitespaces in dict declarations (E203 whitespace before ':') * two blank lines between functions (E302 expected 2 blank lines, found 1) * no spaces in set function arguments (E251 unexpected spaces around keyword / parameter equals) pylint fixes: * rename some variables to fix some redefined-outer-name warnings passing <- passing_filters_list blocking <- blocking_filters_list * explicit config file name (invalid-name warning) * fix many map/filter deprecated-lambda warnings [1] eg. for values as below, replace map/lambda by comprehension as follow # values = [1, 2, 3] # doubles = map(lambda x: x * 2, values) # doubles = [x * 2 for x in values] * un-name some unused variables with '_' to silence unused-variable eg. # for used_val_1, used_val_2 in my_list: # ... # for used_val_1, _ in my_list: [1] https://docs.quantifiedcode.com/python-anti-patterns/readability/using_map_or_filter_where_list_comprehension_is_possible.html
2018-02-24tools/build_configs.py: add python3 compatibilityGabriel Ganne
* dict.itervalues() and dict.iteritems() have been removed from python3 use dict.values(), and dict.items() instead. * both map and filter return values have changed to return a different type of structure in some cases. Enforce a list as return value. * prefer list.append() to l1 + l2 syntax * use the new print function syntax. add the print_function from future for python2 compatibility * use str.format() to read integers directly instead of concatenating their string conversion
2018-02-24kern/kmem: new KMEM_DEBUG optionRichard Braun
2018-02-24kern/log2: fix namingRichard Braun
2018-02-24Update license note about modules from librbraunRichard Braun
2018-02-24kern/{cbuf,fmt,hash,hlist,list,plist,rdxtree,shell,slist}: update from upstreamRichard Braun
Note that this commit changes the order of some list operations without triggering warnings.
2018-02-24New ENOENT error codeRichard Braun
2018-02-24test/test_xcall: include assert.hRichard Braun
2018-02-24New errno.h standard headerRichard Braun
Use standard errno codes. This change also adds strerror to string.h.
2018-02-24Don't use reserved identifiersRichard Braun
2018-02-24doc/intro(9): describe cbuf as a circular byte bufferRichard Braun
2018-02-22kern/spinlock: add ownership tracking as a debugging featureRichard Braun
2018-02-21test/test_rcu_defer: don't bind threads to processorsRichard Braun
2018-02-21x86/pmap: add TODO entryRichard Braun