From: Mathura_Kumar <academic1mathura@gmail.com>
To: brauner@kernel.org
Cc: academic1mathura@gmail.com, linux-arch@vger.kernel.org,
linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk
Subject: [PATCH RESEND v2 0/4] Add new system call for non-destructive peek and inspection to posix ipc mqueue
Date: Fri, 20 Mar 2026 10:53:34 +0530 [thread overview]
Message-ID: <20260320052340.6696-1-academic1mathura@gmail.com> (raw)
Patch series overview:
1. Add New system call do_mq_timedreceive2() and handler implementation
2. Add system call number in all most common arch.
3. Prepared Documentation and test
4. Add entry in performance tools all most common file
This is a fresh patch series starting from v1. It completely replaces
the previous series (v1–v5) sent about a month ago, so please do not
confuse it with the older thread.I preferred to start a new series instead of
continuing the old one, as it had become messy and almost everything has been rewritten.
All feedback from the earlier series has been taken into account and incorporated here.
Short Description:
POSIX message queues currently lack a mechanism to read
a message without removing it from the queue. This is a
long-standing limitation,when we require inspection of queue state
without altering it.
Design considerations:
Two approaches for copying message data to userspace
were evaluated:
1) Refcount-based message lifecycle handling
- This can help us Avoids intermediate temp kernel copy
- Extends message lifetime
-But this may increase writer starvation under heavy load and
add unnecessary complication on priority management and
delay more time to free space in inode due refcount may prevent
2) Temporary kernel buffer copy
- Copies message into a bounded kernel buffer
- Reduces time message remains locked
- Improves fairness under write-heavy workloads
- Simpler lifetime management
My implementation adopts the temporary buffer approach
to minimize starvation and reduce locking complexity.
The design allows future transition if refcounting is
deemed preferable.
Testing:
- 17 functional test cases
- Multi-threaded producer/consumer scenarios
- concurrent pop and peek
- Edge cases: empty queue, FIFO
invalid flags, signal interruption etc.
Use Case:
1) Observability in distributed systems
e.g Monitoring tools can inspect queue contents without interfering with
normal processing
2) Check pointing system like CRIU can have a look into queue without consuming and can store messages
3) Resource-aware processing
4) Selective Consumption for Specialized Workers
change since v1:
- minor update, header guard was removed from include/uapi/linux/mqueue.h
- v1 Link: https://lore.kernel.org/all/20260315040827.156558-1-academic1mathura@gmail.com/T/#t
note for
Thanks for reviewing.
Documentation/userspace-api/index.rst | 1 +
Documentation/userspace-api/ipc.rst | 222 +++++
arch/alpha/kernel/syscalls/syscall.tbl | 1 +
arch/arm/tools/syscall.tbl | 1 +
arch/arm64/tools/syscall_32.tbl | 1 +
arch/m68k/kernel/syscalls/syscall.tbl | 1 +
arch/microblaze/kernel/syscalls/syscall.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n32.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n64.tbl | 1 +
arch/mips/kernel/syscalls/syscall_o32.tbl | 1 +
arch/parisc/kernel/syscalls/syscall.tbl | 1 +
arch/powerpc/kernel/syscalls/syscall.tbl | 1 +
arch/s390/kernel/syscalls/syscall.tbl | 1 +
arch/sh/kernel/syscalls/syscall.tbl | 1 +
arch/sparc/kernel/syscalls/syscall.tbl | 1 +
arch/x86/entry/syscalls/syscall_32.tbl | 1 +
arch/x86/entry/syscalls/syscall_64.tbl | 1 +
arch/xtensa/kernel/syscalls/syscall.tbl | 1 +
include/linux/compat.h | 6 +-
include/linux/syscalls.h | 6 +
include/uapi/asm-generic/unistd.h | 7 +-
include/uapi/linux/mqueue.h | 14 +-
ipc/mqueue.c | 186 ++++-
ipc/msg.c | 2 +-
ipc/msgutil.c | 48 +-
ipc/util.h | 3 +-
kernel/sys_ni.c | 1 +
scripts/syscall.tbl | 1 +
.../arch/alpha/entry/syscalls/syscall.tbl | 1 +
.../perf/arch/arm/entry/syscalls/syscall.tbl | 1 +
.../arch/arm64/entry/syscalls/syscall_32.tbl | 1 +
.../arch/mips/entry/syscalls/syscall_n64.tbl | 1 +
.../arch/parisc/entry/syscalls/syscall.tbl | 1 +
.../arch/powerpc/entry/syscalls/syscall.tbl | 1 +
.../perf/arch/s390/entry/syscalls/syscall.tbl | 1 +
tools/perf/arch/sh/entry/syscalls/syscall.tbl | 1 +
.../arch/sparc/entry/syscalls/syscall.tbl | 1 +
.../arch/x86/entry/syscalls/syscall_32.tbl | 1 +
.../arch/x86/entry/syscalls/syscall_64.tbl | 1 +
.../arch/xtensa/entry/syscalls/syscall.tbl | 1 +
tools/scripts/syscall.tbl | 1 +
tools/testing/selftests/ipc/.gitignore | 1 +
tools/testing/selftests/ipc/Makefile | 9 +-
tools/testing/selftests/ipc/mq_peek.c | 785 ++++++++++++++++++
44 files changed, 1278 insertions(+), 43 deletions(-)
create mode 100644 Documentation/userspace-api/ipc.rst
create mode 100644 tools/testing/selftests/ipc/mq_peek.c
--
2.43.0
next reply other threads:[~2026-03-20 5:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-20 5:23 Mathura_Kumar [this message]
2026-03-20 5:23 ` [PATCH RESEND v2 1/4]IPC: Added New system call do_mq_timedreceive2() for non-destructive peek on posix mqueue Mathura_Kumar
2026-03-20 5:23 ` [PATCH RESEND v2 2/4]IPC: Added system call number in all most common arch Mathura_Kumar
2026-03-20 5:23 ` [PATCH RESEND v2 3/4]IPC: Prepared Documentation and test Mathura_Kumar
2026-03-20 5:23 ` [PATCH RESEND v2 4/4]IPC:Added entry in performance tools for new system call Mathura_Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260320052340.6696-1-academic1mathura@gmail.com \
--to=academic1mathura@gmail.com \
--cc=brauner@kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox