commit: 2a58c7f5880e48a12ada19a8ad1a6add0804b637
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 27 11:18:55 2025 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Nov 27 11:18:55 2025 +0000
URL: https://gitweb.gentoo.org/proj/steve.git/commit/?id=2a58c7f5
Move job token giving code to common function
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
steve.cxx | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/steve.cxx b/steve.cxx
index 52ff9e6..ff7bdf2 100644
--- a/steve.cxx
+++ b/steve.cxx
@@ -80,17 +80,21 @@ struct steve_state {
struct fuse_buf buf{};
};
+static void steve_give_token(steve_state *state, fuse_req_t req, uint64_t pid)
+{
+ state->tokens--;
+ state->processes[pid].tokens_held++;
+ if (state->verbose)
+ std::print(stderr, "Giving job token to PID {}, {} left, {}
tokens held by process\n",
+ pid, state->tokens,
state->processes[pid].tokens_held);
+ fuse_reply_buf(req, "+", 1);
+}
+
static void steve_wake_waiters(steve_state *state)
{
while (state->tokens > 0 && !state->read_waiters.empty()) {
const steve_read_waiter *read_waiter =
&state->read_waiters.front();
-
- state->tokens--;
- state->processes[read_waiter->pid].tokens_held++;
- if (state->verbose)
- std::print(stderr, "Giving job token to PID {}, {}
left, {} tokens held by process\n",
- read_waiter->pid, state->tokens,
state->processes[read_waiter->pid].tokens_held);
- fuse_reply_buf(read_waiter->req, "+", 1);
+ steve_give_token(state, read_waiter->req, read_waiter->pid);
state->read_waiters.pop_front();
}
@@ -231,12 +235,7 @@ static void steve_read(
/* no need to support reading more than one token at a time */
if (state->tokens > 0) {
- state->tokens--;
- state->processes[fi->fh].tokens_held++;
- if (state->verbose)
- std::print(stderr, "Giving job token to PID {}, {}
left, {} tokens held by process\n",
- fi->fh, state->tokens,
state->processes[fi->fh].tokens_held);
- fuse_reply_buf(req, "+", 1);
+ steve_give_token(state, req, fi->fh);
return;
}