diff options
Diffstat (limited to 'upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2')
-rw-r--r-- | upstream/opensuse-leap-15-6/man2/rt_sigqueueinfo.2 | 291 |
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) |