1. 05 May, 2020 1 commit
    • Max Kellermann's avatar
      input/uring: new input plugin using io_uring · dae8da70
      Max Kellermann authored
      This is the final piece of the series to establish io_uring support on
      Linux.
      
      MPD doesn't need io_uring for its efficient bulk I/O support, but to
      allow file I/O to be cancelled.  This is a big problem on CIFS/NFS
      mounts where processes sleep uninterruptable if the file server
      disappears, deadlocking MPD.
      
      With io_uring, a flaky NFS connection allows MPD to continue to work
      (even though there are still deadlocks inside MPD which need to be
      addressed).
      
      This plugin does not yet use cancellable `open()` using
      `IORING_OP_OPENAT`.  This will be implemented later.
      
      Lots of other optimization opportunities for io_uring are still
      missing as well - for example the database update could benefit a lot,
      but unfortunately, io_uring doesn't have `readdir()` support just yet.
      dae8da70
  2. 12 Mar, 2020 1 commit
  3. 18 Jan, 2020 1 commit
  4. 17 Jun, 2019 1 commit
  5. 19 Nov, 2018 1 commit
    • Max Kellermann's avatar
      check.h: remove obsolete header · ce49d99c
      Max Kellermann authored
      Since we switched from autotools to Meson in commit
      94592c14, we don't need to include
      `config.h` early to properly enable large file support.  Meson passes
      the required macros on the compiler command line instead of defining
      them in `config.h`.
      
      This means we can include `config.h` at any time, whenever we want to
      check its macros, and there are no ordering constraints.
      ce49d99c
  6. 31 Oct, 2018 1 commit
  7. 22 Jun, 2018 1 commit
    • Max Kellermann's avatar
      input/Stream: remove attribute "cond", replace with handler interface · d0fbf6db
      Max Kellermann authored
      This adds a bit of overhead, but also adds flexibility to the API,
      because arbitrary triggers may be invoked from that virtual method
      implementation, not just Cond::signal().
      
      The motivation for this is to make the handlers more dynamic, for the
      upcoming buffering class utilizing ProxyInputStream.
      d0fbf6db
  8. 20 Jan, 2018 2 commits
  9. 03 Jan, 2017 1 commit
  10. 09 Sep, 2016 1 commit
  11. 26 Feb, 2016 1 commit
  12. 21 Feb, 2016 1 commit
  13. 01 Jan, 2015 1 commit
  14. 02 Oct, 2014 2 commits
  15. 08 Feb, 2014 2 commits
  16. 23 Jan, 2014 1 commit
  17. 13 Jan, 2014 1 commit
  18. 19 Oct, 2013 1 commit
  19. 04 Sep, 2013 1 commit
  20. 30 Jan, 2013 1 commit
  21. 29 Jan, 2013 3 commits
  22. 27 Jan, 2013 1 commit
  23. 24 Jan, 2013 1 commit
  24. 16 Sep, 2011 1 commit
    • Max Kellermann's avatar
      input_stream: non-blocking I/O · 754f26a9
      Max Kellermann authored
      Add GMutex, GCond attributes which will be used by callers to
      conditionally wait on the stream.
      
      Remove the (now-useless) plugin method buffer(), wait on GCond
      instead.  Lock the input_stream before each method call.  Do the same
      with the playlist plugins.
      754f26a9
  25. 29 Jan, 2011 1 commit
  26. 01 Jan, 2010 2 commits
    • Max Kellermann's avatar
      input_stream: return allocated input_stream objects · d3b763a4
      Max Kellermann authored
      Major API redesign: don't let the caller allocate the input_stream
      object.  Let each input plugin allocate its own (derived/extended)
      input_stream pointer.  The "data" attribute can now be removed, and
      all input plugins simply cast the input_stream pointer to their own
      structure (with an "struct input_stream base" as the first attribute).
      d3b763a4
    • Avuton Olrich's avatar
      Update copyright notices. · 9d3865cb
      Avuton Olrich authored
      9d3865cb
  27. 16 Dec, 2009 2 commits