commit: 1831f92290a0076480d365430b61511b4b7619db
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 18 07:05:42 2025 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Nov 18 07:05:42 2025 +0000
URL: https://gitweb.gentoo.org/proj/steve.git/commit/?id=1831f922
Consistently take PID from fi->fh
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
steve.cxx | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/steve.cxx b/steve.cxx
index 0c9f1e1..f12e10b 100644
--- a/steve.cxx
+++ b/steve.cxx
@@ -35,7 +35,7 @@ static const char *usage =
struct steve_read_waiter {
fuse_req_t req;
- pid_t pid;
+ uint64_t pid;
};
struct steve_state {
@@ -113,7 +113,7 @@ static void steve_open(fuse_req_t req, struct
fuse_file_info *fi)
fuse_reply_open(req, fi);
if (state->verbose)
- printf("Device open by PID %d\n", context->pid);
+ printf("Device open by PID %ld\n", fi->fh);
}
static void steve_release(fuse_req_t req, struct fuse_file_info *fi)
@@ -132,7 +132,7 @@ static void steve_interrupt(fuse_req_t req, void *userdata)
for (auto it = state->read_waiters.begin(); it !=
state->read_waiters.end(); ++it) {
if (it->req == req) {
if (state->verbose)
- printf("Passed EINTR to PID %d\n", it->pid);
+ printf("Passed EINTR to PID %ld\n", it->pid);
state->read_waiters.erase(it);
break;
}
@@ -142,7 +142,6 @@ static void steve_interrupt(fuse_req_t req, void *userdata)
static void steve_read(
fuse_req_t req, size_t size, off_t off, struct fuse_file_info *fi)
{
- const struct fuse_ctx *context = fuse_req_ctx(req);
steve_state *state = static_cast<steve_state *>(fuse_req_userdata(req));
if (off != 0) {
@@ -158,8 +157,8 @@ static void steve_read(
if (state->tokens > 0) {
state->tokens--;
if (state->verbose)
- printf("Giving job token to PID %d, %d left\n",
- context->pid, state->tokens);
+ printf("Giving job token to PID %ld, %d left\n",
+ fi->fh, state->tokens);
fuse_reply_buf(req, "+", 1);
return;
}
@@ -169,9 +168,9 @@ static void steve_read(
return;
}
- state->read_waiters.emplace_back(steve_read_waiter{req, context->pid});
+ state->read_waiters.emplace_back(steve_read_waiter{req, fi->fh});
if (state->verbose)
- printf("No free job token for PID %d, waiting\n", context->pid);
+ printf("No free job token for PID %ld, waiting\n", fi->fh);
fuse_req_interrupt_func(req, steve_interrupt, state);
}
@@ -182,7 +181,7 @@ static void steve_wake_waiters(steve_state *state)
state->tokens--;
if (state->verbose)
- printf("Giving job token to PID %d, %d left\n",
+ printf("Giving job token to PID %ld, %d left\n",
read_waiter->pid, state->tokens);
fuse_reply_buf(read_waiter->req, "+", 1);
state->read_waiters.pop_front();
@@ -193,7 +192,6 @@ static void steve_write(
fuse_req_t req, const char *buf, size_t size, off_t off,
struct fuse_file_info *fi)
{
- const struct fuse_ctx *context = fuse_req_ctx(req);
steve_state *state = static_cast<steve_state *>(fuse_req_userdata(req));
if (off != 0) {
@@ -203,8 +201,8 @@ static void steve_write(
state->tokens += size;
if (state->verbose)
- printf("PID %d returned %zd tokens, %d available now\n",
- context->pid, size, state->tokens);
+ printf("PID %ld returned %zd tokens, %d available now\n",
+ fi->fh, size, state->tokens);
fuse_reply_write(req, size);
/* Since we have jobs now, see if anyone's waiting */