summaryrefslogtreecommitdiffstats
path: root/upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2')
-rw-r--r--upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2291
1 files changed, 291 insertions, 0 deletions
diff --git a/upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2 b/upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2
new file mode 100644
index 00000000..2897a662
--- /dev/null
+++ b/upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2
@@ -0,0 +1,291 @@
+.\" Copyright (c) 2002 Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" added note on self-signalling, aeb, 2002-06-07
+.\"
+.TH RT_SIGQUEUEINFO 2 2003-04-07 "Linux 2.4.19" "Linux Programmer's Manual"
+.SH NAME
+rt_sigqueueinfo \- queue a signal and data to a process
+.SH SYNOPSIS
+.BI "long sys_rt_sigqueueinfo(int " pid ", int " sig ", siginfo_t * " uinfo ");
+.SH DESCRIPTION
+.BR sys_rt_sigqueueinfo ()
+sends the signal specified in
+.I sig
+to the process whose PID is given in
+.IR pid .
+The null signal (0) can be used to check if a process with a given
+PID exists.
+.PP
+The
+.I uinfo
+argument is used to specify an accompanying item of data (either an integer
+or a pointer value) in the sigval part of the
+siginfo_t structure to be sent with the signal.
+
+If the receiving process has installed a handler for this signal using the
+.B SA_SIGINFO
+flag to
+.BR sigaction (2),
+then it can obtain this data via the
+.I si_value
+field of the
+.I siginfo_t
+structure passed as the second argument to the handler.
+Furthermore, the
+.I si_code
+field of that structure will be set to
+.BR SI_QUEUE .
+.SH "RETURN VALUE"
+On success,
+.BR sys_rt_sigqueueinfo ()
+returns 0, indicating that the signal was successfully
+queued to the receiving proces.
+Otherwise, one of the following errors is returned.
+.SH ERRORS
+.TP
+.B -EAGAIN
+The limit of signals which may be queued has been reached.
+.TP
+.B -EINVAL
+.I sig
+was invalid.
+.TP
+.B -ESRCH
+No process has a PID matching
+.IR pid .
+.TP
+.B -EPERM
+The process does not have permission to send the signal
+to the receiving process.
+.TP
+.B -EFAULT
+memory error.
+.SH NOTES
+If this function results in the sending of a signal to the process
+that invoked it, and that signal was not blocked by the calling thread,
+and no other threads were willing to handle this signal (either by
+having it unblocked, or by waiting for it using
+.BR sigwait (3)),
+then at least some signal must be delivered to this thread before this
+function returns.
+.SH "CONFORMING TO"
+POSIX 1003.1-2001
+.SH "SEE ALSO"
+.BR kill (2),
+.BR sigaction (2),
+.BR signal (2),
+.BR sigwait (3),
+.BR signal (7),
+.BR sigqueue (2)
+.\" Copyright (c) 2002, 2011 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH rt_sigqueueinfo 2 2023-03-30 "Linux man-pages 6.04"
+.SH NAME
+rt_sigqueueinfo, rt_tgsigqueueinfo \- queue a signal and data
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/signal.h>" " /* Definition of " SI_* " constants */"
+.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
+.B #include <unistd.h>
+.PP
+.BI "int syscall(SYS_rt_sigqueueinfo, pid_t " tgid ,
+.BI " int " sig ", siginfo_t *" info );
+.BI "int syscall(SYS_rt_tgsigqueueinfo, pid_t " tgid ", pid_t " tid ,
+.BI " int " sig ", siginfo_t *" info );
+.fi
+.PP
+.IR Note :
+There are no glibc wrappers for these system calls; see NOTES.
+.SH DESCRIPTION
+The
+.BR rt_sigqueueinfo ()
+and
+.BR rt_tgsigqueueinfo ()
+system calls are the low-level interfaces used to send a signal plus data
+to a process or thread.
+The receiver of the signal can obtain the accompanying data
+by establishing a signal handler with the
+.BR sigaction (2)
+.B SA_SIGINFO
+flag.
+.PP
+These system calls are not intended for direct application use;
+they are provided to allow the implementation of
+.BR sigqueue (3)
+and
+.BR pthread_sigqueue (3).
+.PP
+The
+.BR rt_sigqueueinfo ()
+system call sends the signal
+.I sig
+to the thread group with the ID
+.IR tgid .
+(The term "thread group" is synonymous with "process", and
+.I tid
+corresponds to the traditional UNIX process ID.)
+The signal will be delivered to an arbitrary member of the thread group
+(i.e., one of the threads that is not currently blocking the signal).
+.PP
+The
+.I info
+argument specifies the data to accompany the signal.
+This argument is a pointer to a structure of type
+.IR siginfo_t ,
+described in
+.BR sigaction (2)
+(and defined by including
+.IR <sigaction.h> ).
+The caller should set the following fields in this structure:
+.TP
+.I si_code
+This should be one of the
+.B SI_*
+codes in the Linux kernel source file
+.IR include/asm\-generic/siginfo.h .
+If the signal is being sent to any process other than the caller itself,
+the following restrictions apply:
+.RS
+.IP \[bu] 3
+The code can't be a value greater than or equal to zero.
+In particular, it can't be
+.BR SI_USER ,
+which is used by the kernel to indicate a signal sent by
+.BR kill (2),
+and nor can it be
+.BR SI_KERNEL ,
+which is used to indicate a signal generated by the kernel.
+.IP \[bu]
+The code can't (since Linux 2.6.39) be
+.BR SI_TKILL ,
+which is used by the kernel to indicate a signal sent using
+.\" tkill(2) or
+.BR tgkill (2).
+.RE
+.TP
+.I si_pid
+This should be set to a process ID,
+typically the process ID of the sender.
+.TP
+.I si_uid
+This should be set to a user ID,
+typically the real user ID of the sender.
+.TP
+.I si_value
+This field contains the user data to accompany the signal.
+For more information, see the description of the last
+.RI ( "union sigval" )
+argument of
+.BR sigqueue (3).
+.PP
+Internally, the kernel sets the
+.I si_signo
+field to the value specified in
+.IR sig ,
+so that the receiver of the signal can also obtain
+the signal number via that field.
+.PP
+The
+.BR rt_tgsigqueueinfo ()
+system call is like
+.BR rt_sigqueueinfo (),
+but sends the signal and data to the single thread
+specified by the combination of
+.IR tgid ,
+a thread group ID,
+and
+.IR tid ,
+a thread in that thread group.
+.SH RETURN VALUE
+On success, these system calls return 0.
+On error, they return \-1 and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EAGAIN
+The limit of signals which may be queued has been reached.
+(See
+.BR signal (7)
+for further information.)
+.TP
+.B EINVAL
+.IR sig ,
+.IR tgid ,
+or
+.I tid
+was invalid.
+.TP
+.B EPERM
+The caller does not have permission to send the signal to the target.
+For the required permissions, see
+.BR kill (2).
+.TP
+.B EPERM
+.I tgid
+specifies a process other than the caller and
+.I info\->si_code
+is invalid.
+.TP
+.B ESRCH
+.BR rt_sigqueueinfo ():
+No thread group matching
+.I tgid
+was found.
+.PP
+.BR rt_tgsigqueinfo ():
+No thread matching
+.I tgid
+and
+.I tid
+was found.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+.TP
+.BR rt_sigqueueinfo ()
+Linux 2.2.
+.TP
+.BR rt_tgsigqueueinfo ()
+Linux 2.6.31.
+.SH NOTES
+Since these system calls are not intended for application use,
+there are no glibc wrapper functions; use
+.BR syscall (2)
+in the unlikely case that you want to call them directly.
+.PP
+As with
+.BR kill (2),
+the null signal (0) can be used to check if the specified process
+or thread exists.
+.SH SEE ALSO
+.BR kill (2),
+.BR pidfd_send_signal (2),
+.BR sigaction (2),
+.BR sigprocmask (2),
+.BR tgkill (2),
+.BR pthread_sigqueue (3),
+.BR sigqueue (3),
+.BR signal (7)