- Mar 22, 2021
-
-
Florian Schmaus authored
-
- Mar 19, 2021
-
-
Florian Schmaus authored
8 bits are not enough for some systems. This also means that workeraffinity_t has to be increased.
-
Florian Schmaus authored
-
- Mar 18, 2021
-
-
Florian Schmaus authored
Fix submit of invalid Future chains Closes #13 See merge request !136
-
Florian Fischer authored
io_uring_submit does some inline error checking and consumes less cqes than prepared if an error is detected. Currently we just cancel the Futures, whose prepared sqes were not submitted. But this leaves already prepared sqes for those futures in the SQ of the io_uring which will be submitted the next time io_uring_submit is called. This results in a violation of the chain guaranty, that dependent operations are only executed if all dependencies were successful. Additionally this leads to double completions or memory corruption because the io_uring will produce cqes for already completed Futures. To prevent this from happening we track all sqes we prepared to invalidate and resubmit those which were not submitted because of a short submit. We invalidate sqes by preparing them as NOP instructions and set their user data to NULL. I took this approach instead of rewinding the ring or somethings like similar because it seemed safer for me not fiddle with io_uring internals and just be less efficient. Enable previously failing LinkFutureTest test cases.
-
Florian Fischer authored
-
Florian Fischer authored
Fix compilation error in LinkFutureTest where clsoe was used instead of closeAndWait.
-
Florian Schmaus authored
[Debug] declare LOG_STR_LAMBDA's return type because gcc 8.3 can't infer it See merge request !137
-
Florian Fischer authored
-
- Mar 17, 2021
-
-
Florian Schmaus authored
Debug changes for our Future See merge request !134
-
Florian Schmaus authored
Echo client changes See merge request !135
-
Florian Fischer authored
While we haven't figured out why the version using linked futures breaks we can use a simpler implementation which calls submitAndWait on both futures separately
-
Florian Fischer authored
First of all this replaces the call to sleep(execution_seconds) which calls POSIX sleep(3) which is definitely not what we want here blocking one worker thread. Using a std::thread for termination was chosen because we assume it will be more precise than the emper native emper::sleep.
-
- Mar 16, 2021
-
-
Florian Schmaus authored
Gather stats regarding re-reaps See merge request !127
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Fischer authored
Document the encountered failures in code comments.
-
Florian Fischer authored
This test resembles our EchoClient implementation using linked futures.
-
Florian Fischer authored
-
Florian Schmaus authored
[Debug] use a lambda to build up the log message See merge request !133
-
Florian Fischer authored
This hides the used std::stringstream from the context using the LOG macros. So we don't have to see the a huge messy std::stringstream object in gdb for example. The use of a lambda is a ISO C++ alternative to GCC's statement expression.
-
- Mar 15, 2021
-
-
Florian Schmaus authored
More debug related changes See merge request !131
-
Florian Schmaus authored
[IO] propagate callerEnvironment to reapCompletion See merge request !132
-
Florian Fischer authored
-
- Mar 13, 2021
-
-
Florian Fischer authored
-
Florian Fischer authored
* Remove the obsolete EMPER_LOG_OFF check. * Add LogLevel::Debug to DBG and WDBG
-
- Mar 12, 2021
-
-
Florian Schmaus authored
[IO] add execution time option to EchoClient See merge request !129
-
Florian Schmaus authored
[Debug] remove OFF LogLevel, make Info release default, use constexpr everywhere See merge request !130
-
Florian Fischer authored
-
Florian Fischer authored
-
- Mar 11, 2021
-
-
Florian Schmaus authored
[EchoServer] add configurable computation part in us spent busy looping See merge request !124
-
Florian Fischer authored
-
Florian Fischer authored
Specifying execution time and iterations is not allowed.
-
- Mar 10, 2021
-
-
Florian Schmaus authored
Improved echo client See merge request !128
-
- Mar 09, 2021
-
-
Florian Schmaus authored
[IO] make the lock implementation protecting a IoContext's cq configurable  See merge request !126
-
Florian Fischer authored
This change introduces a new synchronization primitive "PseudoCountingTryLock" which takes an actual lock as template and provides a CountingTryLock interface. By using a PseudoCountingTryLock we don't have to change any synchronization code in IoContext::reapCompletion. Since all PseudoCountingTryLock code is defined in a header the compiler should see our constant return values and hopefully optimize away any check depending on those constant return values. Options: * spin_lock - naive CAS spin lock * mutex - std::mutex * counting_try_lock (default) - our own lightweight special purpose synchronization primitive
-
Florian Schmaus authored
Reduce the critical section of io_uring CQ See merge request !120
-
Florian Schmaus authored
[meson] Fix 'iwyu' target for meson >= 0.57 See merge request !125
-
Florian Schmaus authored
Probably avoids dynamic memory allocation done by the previously used std::vector.
-
Florian Schmaus authored
The run_target() function requires an absolute path in meson >= 0.57.
-