Skip to content
Snippets Groups Projects
  1. Sep 21, 2021
  2. Sep 16, 2021
  3. Sep 14, 2021
    • Florian Fischer's avatar
      [lib/LinuxVersion] multiple fixes · c1387013
      Florian Fischer authored
      * remove fancy but broken static LinuxVersion object.
        This means each usage of a EMPER_LINUX_* macro results in a syscall.
        But I think this is worth it when the result is a sound program.
        Users of those macros should store the result of the comparison anyway.
      * fix that we skipped parsing the last part of a version string
      * add a test for LinuxVersion
      * IO_MUST_INVALIDATE_BROKEN_CHAIN can still be const
      c1387013
  4. Sep 13, 2021
    • Florian Fischer's avatar
      [io/tests] use our own ASSERT macro unaffected by NDEBUG · 9fdc6e1a
      Florian Fischer authored
      This allows use to remove the current hack that the test are always
      build without NDEBUG regardless of the meson buildtype.
      
      Which is fact fixes the failing io tests in release builds.
      Because Future.hpp and Future.cpp see the same version of NDEBUG.
      9fdc6e1a
  5. Aug 19, 2021
  6. Aug 18, 2021
  7. Jul 29, 2021
  8. Jul 07, 2021
  9. Jul 06, 2021
  10. May 17, 2021
  11. May 04, 2021
  12. Apr 13, 2021
  13. Apr 01, 2021
  14. Mar 24, 2021
  15. Mar 23, 2021
    • Florian Fischer's avatar
      [Debug] s/WDBG/DBG and always terminate a log messager with a new line · 28028fac
      Florian Fischer authored
      Rename the macro used to build up the debug message, to better reflect
      its generality.
      It can be used anywhere to build a string with C++ stream formatting.
      std::string s = EMPER_BUILD_STR("foo = " << 1 " , bar = " << bar(42));
      
      Since WDBG was the only log macro without a terminating newline, which
      was in fact broken according to flow, we can remove it and the new line
      handling code in the LOG macro.
      28028fac
  16. Mar 18, 2021
    • Florian Fischer's avatar
      [IoContext] invalidate unsubmitted sqes · 03727b29
      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.
      03727b29
    • Florian Fischer's avatar
      [IO] mark IO functions returning futures as nodiscard · 79f6eb9f
      Florian Fischer authored
      Fix compilation error in LinkFutureTest where clsoe was used instead
      of closeAndWait.
      79f6eb9f
  17. Mar 16, 2021
  18. Mar 13, 2021
  19. Mar 03, 2021
  20. Feb 26, 2021
    • Florian Fischer's avatar
      [meson] better propagate dependencies · 2d0b5f6b
      Florian Fischer authored
      The emper header LockedUnboundedQueue.hpp could depend on different libraries
      according to the implementation.
      
      To link those dependencies with everything including LockedUnboundedQueue.hpp
      we propagate all emper_dependencies through emper_dep.
      
      And using emper_dep as a dependency seems anyway better than essentially
      writing down emper_dep manually each time.
      
      emper_dep essentially is:
      (link_with:emper, include_directories: emper_all_include)
      2d0b5f6b
  21. Feb 22, 2021
  22. Feb 20, 2021
  23. Feb 19, 2021
  24. Feb 05, 2021
    • Florian Fischer's avatar
      [IO] add callback support · 827b79ae
      Florian Fischer authored
      Futures can have a registered Callback of type
      std::function<void(const uint32_t&)> which gets called in a new
      Fiber with the result of the IO Request.
      Note the first completion will cause the execution of a callback and
      partial completion support must be implemented manually in the callback.
      
      Callbacks are stored in a heap allocated std::function on registration
      and are freed by the new Fiber after the callback returned;
      
      The Future with a registered Callback is not referenced in any way in
      the IO subsystem and therefore can be dropped after being submitted.
      This also means that a Future with a registered callback will not be
      signaled by the IO subsystem on completion.
      If signaling is desired one must implement it manually in the registered
      callback.
      827b79ae
    • Florian Fischer's avatar
      [test] use gtest meson wrap if gtest is not found · 3790a034
      Florian Fischer authored
      The gtest wrap can be updated with the meson wrap command
      3790a034
    • Florian Schmaus's avatar
  25. Feb 03, 2021
Loading