emper merge requestshttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests2022-05-14T15:32:38Zhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/1make emper consumable as meson subproject2022-05-14T15:32:38ZFlorian Fischermake emper consumable as meson subprojecthttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/2[meson] export and use meson options as C/C++ defines2020-10-24T13:21:24ZFlorian Fischer[meson] export and use meson options as C/C++ definesAll options in meson_options.txt are exported in emper-config.h as
uppercase defines and prefixed with EMPER_.
Every source file using one of the EMPER_* defines now includes "emper-config.h".All options in meson_options.txt are exported in emper-config.h as
uppercase defines and prefixed with EMPER_.
Every source file using one of the EMPER_* defines now includes "emper-config.h".https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/3Use meson configuration2020-09-10T11:55:49ZFlorian FischerUse meson configurationThis commit populates the conf_data with the options from `meson_options.txt` and includes the corresponding config header wherever the config defines are usedThis commit populates the conf_data with the options from `meson_options.txt` and includes the corresponding config header wherever the config defines are usedhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/4WIP: Add Burak's async I/O library as standalone commit2020-10-14T13:20:54ZFlorian FischerWIP: Add Burak's async I/O library as standalone commithttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/5make log() thread-safe by dropping the log level map2020-11-16T10:07:33ZFlorian Fischermake log() thread-safe by dropping the log level mapConcurrently using the `std::map LOG_CONFIG` can result in a segmentation fault.
To prevent concurrent access to LOG_CONFIG a new constexpr getLevelFor
is introduces analogue to getTagFor.Concurrently using the `std::map LOG_CONFIG` can result in a segmentation fault.
To prevent concurrent access to LOG_CONFIG a new constexpr getLevelFor
is introduces analogue to getTagFor.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/6WIP: IO support using io_uring2021-01-03T20:48:02ZFlorian FischerWIP: IO support using io_uringAdd AsyncLibrary providing IO operations which avoid the thread-blocking anomaly using the linux io_uring API.
This MR makes !4 obsolete.
Fixes #2.
TODO:
- [x] Use a dedicated thread instead of the main thread maybe?
- [x] Overhaul Sim...Add AsyncLibrary providing IO operations which avoid the thread-blocking anomaly using the linux io_uring API.
This MR makes !4 obsolete.
Fixes #2.
TODO:
- [x] Use a dedicated thread instead of the main thread maybe?
- [x] Overhaul SimpleDiskAndNetworkTest
- [x] Find and fix the memory leak
- [x] be competetive with burak's epoll implementation. Use !54 for a high performance IO implementation
- [x] Make API really asynchronous and return a future
- [x] Handle IO requests issued after IO subsystem is terminated
- [x] figure out how to gracefully shutdown
- [x] Don't unblock fibers on partial IO completion (what IO functions are feasable, `recv(..., MSG_WAITALL)`)
- [x] Document exported functions
- [x] ~~introduce timeouts to prevent denial-of-service by opening more connections than there are entries in the io_uring~~ This is nonsense and not how io_uring works.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/7support generic test suites not just 'smoke'2020-10-28T20:57:38ZFlorian Fischersupport generic test suites not just 'smoke'This is useful if we want to group our tests in functional suites, like 'io' for IO related tests.This is useful if we want to group our tests in functional suites, like 'io' for IO related tests.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/8declare die() as noreturn2020-10-28T20:57:56ZFlorian Fischerdeclare die() as noreturnhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/9fix Actor and UnboundedBlockingMpscQueue2020-11-04T14:33:57ZFlorian Fischerfix Actor and UnboundedBlockingMpscQueueThe first commits prevents undefined behaviour produced by the uninitialized context pointer in the UBMPSC Queue.
The second commit fixes the lost update problem between `Actor::stop()` and `Actor::actorLoop()`.The first commits prevents undefined behaviour produced by the uninitialized context pointer in the UBMPSC Queue.
The second commit fixes the lost update problem between `Actor::stop()` and `Actor::actorLoop()`.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/10remove unused dependencies.db left over from the deleted script dependencyMan...2020-11-06T11:11:56ZFlorian Fischerremove unused dependencies.db left over from the deleted script dependencyManager.shhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/11Remove duplicate block()/unblock() code2020-11-05T07:46:23ZFlorian SchmausRemove duplicate block()/unblock() codeThis makes all EMPER synchronization primitives inherit from
Blockable. As result all block and unblock operations of a context
will go to the same code path. We can later use this to store the set
of currently blocked contexts.
Also Bl...This makes all EMPER synchronization primitives inherit from
Blockable. As result all block and unblock operations of a context
will go to the same code path. We can later use this to store the set
of currently blocked contexts.
Also Blockable now inherits Logger, which makes some things easier,
but as result we have to invoke the logX() methods with "this->"
prepended. See related code comment.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/12smoke-test, clang-format, gitlab-ci2020-11-05T08:21:13ZFlorian Schmaussmoke-test, clang-format, gitlab-cihttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/13IWYU and license check2020-11-05T15:28:24ZFlorian SchmausIWYU and license checkhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/14Add and apply clang-tidy2020-11-10T13:19:23ZFlorian SchmausAdd and apply clang-tidyhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/15Add 'test' stage to CI2020-11-10T15:07:54ZFlorian SchmausAdd 'test' stage to CIhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/16Use Dead Code Elimination (DCE) instead of #ifdef2020-11-10T17:07:11ZFlorian SchmausUse Dead Code Elimination (DCE) instead of #ifdefhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/171. remove scripts/ 2. add 'doc' target to smoke tests2021-04-19T19:51:47ZFlorian Schmaus1. remove scripts/ 2. add 'doc' target to smoke testshttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/18[gitlab-ci] Update debian-dev container version to 1.132020-11-11T07:17:56ZFlorian Schmaus[gitlab-ci] Update debian-dev container version to 1.13https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/19Re-enable SimpleActorTest2020-11-16T10:07:13ZFlorian SchmausRe-enable SimpleActorTesthttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/20[Makefile] The 'check' target should also run the smoke tests2020-11-16T10:12:52ZFlorian Schmaus[Makefile] The 'check' target should also run the smoke tests