commit:     e796d126da679b8b7cbd8173bb96be682fb5065f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 10 10:38:52 2026 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jan 10 10:38:52 2026 +0000
URL:        https://gitweb.gentoo.org/proj/steve.git/commit/?id=e796d126

Include waiters in SIGUSR1 report

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 src/steve.cxx | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/steve.cxx b/src/steve.cxx
index dd89412..b9fb0f3 100644
--- a/src/steve.cxx
+++ b/src/steve.cxx
@@ -969,12 +969,25 @@ static void steve_handle_sigusr1(evutil_socket_t, short, 
void *userdata) {
        std::print(stderr, "steve: currently {} tokens available out of {}\n",
                        state->tokens, state->jobs);
        for (const auto &it : state->processes) {
-               std::print(stderr, "{} holds {} tokens:\n",
+               std::print(stderr, "  {} holds {} tokens:\n",
                        steve_process_id(it.first, &it.second), 
it.second.tokens_held);
                for (const auto &jt : it.second.running_jobs)
-                       std::print(stderr, "  job 0x{:02x} running for {}\n", 
jt.first,
+                       std::print(stderr, "    job 0x{:02x} running for {}\n", 
jt.first,
                                std::chrono::duration<double>(current_time - 
jt.second.start_time));
        }
+
+       if (!state->waiters.empty()) {
+               std::print(stderr, "  {} processes waiting for a job token (in 
order):\n",
+                               state->waiters.size());
+               for (const auto &it : state->waiters) {
+                       if (std::holds_alternative<fuse_req_t>(it.handle))
+                               std::print(stderr, "    PID {} is performing a 
blocking read\n", it.pid);
+                       else if (std::holds_alternative<fuse_pollhandle 
*>(it.handle))
+                               std::print(stderr, "    PID {} is polling\n", 
it.pid);
+                       else
+                               assert(0 && "invalid waiter");
+               }
+       }
 }
 
 static void steve_handle_cuse(evutil_socket_t, short, void *userdata) {

Reply via email to