xref: /freebsd/lib/libsys/thr_kill.2 (revision 8269e767)
18269e767SBrooks Davis.\" Copyright (c) 2016 The FreeBSD Foundation, Inc.
28269e767SBrooks Davis.\"
38269e767SBrooks Davis.\" This documentation was written by
48269e767SBrooks Davis.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship
58269e767SBrooks Davis.\" from the FreeBSD Foundation.
68269e767SBrooks Davis.\"
78269e767SBrooks Davis.\" Redistribution and use in source and binary forms, with or without
88269e767SBrooks Davis.\" modification, are permitted provided that the following conditions
98269e767SBrooks Davis.\" are met:
108269e767SBrooks Davis.\" 1. Redistributions of source code must retain the above copyright
118269e767SBrooks Davis.\"    notice, this list of conditions and the following disclaimer.
128269e767SBrooks Davis.\" 2. Redistributions in binary form must reproduce the above copyright
138269e767SBrooks Davis.\"    notice, this list of conditions and the following disclaimer in the
148269e767SBrooks Davis.\"    documentation and/or other materials provided with the distribution.
158269e767SBrooks Davis.\"
168269e767SBrooks Davis.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
178269e767SBrooks Davis.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
188269e767SBrooks Davis.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
198269e767SBrooks Davis.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
208269e767SBrooks Davis.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
218269e767SBrooks Davis.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
228269e767SBrooks Davis.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
238269e767SBrooks Davis.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
248269e767SBrooks Davis.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
258269e767SBrooks Davis.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
268269e767SBrooks Davis.\" SUCH DAMAGE.
278269e767SBrooks Davis.\"
288269e767SBrooks Davis.Dd May 5, 2020
298269e767SBrooks Davis.Dt THR_kill 2
308269e767SBrooks Davis.Os
318269e767SBrooks Davis.Sh NAME
328269e767SBrooks Davis.Nm thr_kill
338269e767SBrooks Davis.Nd send signal to thread
348269e767SBrooks Davis.Sh LIBRARY
358269e767SBrooks Davis.Lb libc
368269e767SBrooks Davis.Sh SYNOPSIS
378269e767SBrooks Davis.In sys/thr.h
388269e767SBrooks Davis.Ft int
398269e767SBrooks Davis.Fn thr_kill "long id" "int sig"
408269e767SBrooks Davis.Ft int
418269e767SBrooks Davis.Fn thr_kill2 "pid_t pid" "long id" "int sig"
428269e767SBrooks Davis.Sh DESCRIPTION
438269e767SBrooks DavisThe
448269e767SBrooks Davis.Fn thr_kill
458269e767SBrooks Davisand
468269e767SBrooks Davis.Fn thr_kill2
478269e767SBrooks Davissystem calls allow sending a signal, specified by the
488269e767SBrooks Davis.Fa sig
498269e767SBrooks Davisargument, to some threads in a process.
508269e767SBrooks DavisFor the
518269e767SBrooks Davis.Fn thr_kill
528269e767SBrooks Davisfunction, signalled threads are always limited to the current process.
538269e767SBrooks DavisFor the
548269e767SBrooks Davis.Fn thr_kill2
558269e767SBrooks Davisfunction, the
568269e767SBrooks Davis.Fa pid
578269e767SBrooks Davisargument specifies the process with threads to be signalled.
588269e767SBrooks Davis.Pp
598269e767SBrooks DavisThe
608269e767SBrooks Davis.Fa id
618269e767SBrooks Davisargument specifies which threads get the signal.
628269e767SBrooks DavisIf
638269e767SBrooks Davis.Fa id
648269e767SBrooks Davisis equal to \-1, all threads in the specified process are signalled.
658269e767SBrooks DavisOtherwise, only the thread with the thread identifier equal to the
668269e767SBrooks Davisargument is signalled.
678269e767SBrooks Davis.Pp
688269e767SBrooks DavisThe
698269e767SBrooks Davis.Fa sig
708269e767SBrooks Davisargument defines the delivered signal.
718269e767SBrooks DavisIt must be a valid signal number or zero.
728269e767SBrooks DavisIn the latter case no signal is actually sent, and the call is used to
738269e767SBrooks Davisverify the liveness of the thread.
748269e767SBrooks Davis.Pp
758269e767SBrooks DavisThe signal is delivered with
768269e767SBrooks Davis.Dv siginfo
778269e767SBrooks Davis.Dv si_code
788269e767SBrooks Davisset to
798269e767SBrooks Davis.Dv SI_LWP .
808269e767SBrooks Davis.Sh RETURN VALUES
818269e767SBrooks DavisIf successful,
828269e767SBrooks Davis.Fn thr_kill
838269e767SBrooks Davisand
848269e767SBrooks Davis.Fn thr_kill2
858269e767SBrooks Daviswill return zero, otherwise \-1 is returned, and
868269e767SBrooks Davis.Va errno
878269e767SBrooks Davisis set to indicate the error.
888269e767SBrooks Davis.Sh ERRORS
898269e767SBrooks DavisThe
908269e767SBrooks Davis.Fn thr_kill
918269e767SBrooks Davisand
928269e767SBrooks Davis.Fn thr_kill2
938269e767SBrooks Davisoperations return the following errors:
948269e767SBrooks Davis.Bl -tag -width Er
958269e767SBrooks Davis.It Bq Er EINVAL
968269e767SBrooks DavisThe
978269e767SBrooks Davis.Fa sig
988269e767SBrooks Davisargument is not zero and does not specify valid signal.
998269e767SBrooks Davis.It Bq Er ESRCH
1008269e767SBrooks DavisThe specified process or thread was not found.
1018269e767SBrooks Davis.El
1028269e767SBrooks Davis.Pp
1038269e767SBrooks DavisAdditionally, the
1048269e767SBrooks Davis.Fn thr_kill2
1058269e767SBrooks Davismay return the following errors:
1068269e767SBrooks Davis.Bl -tag -width Er
1078269e767SBrooks Davis.It Bq Er EPERM
1088269e767SBrooks DavisThe current process does not have sufficient privilege to check existence or
1098269e767SBrooks Davissend a signal to the specified process.
1108269e767SBrooks Davis.El
1118269e767SBrooks Davis.Sh SEE ALSO
1128269e767SBrooks Davis.Xr kill 2 ,
1138269e767SBrooks Davis.Xr thr_exit 2 ,
1148269e767SBrooks Davis.Xr thr_new 2 ,
1158269e767SBrooks Davis.Xr thr_self 2 ,
1168269e767SBrooks Davis.Xr thr_set_name 2 ,
1178269e767SBrooks Davis.Xr _umtx_op 2 ,
1188269e767SBrooks Davis.Xr pthread_kill 3 ,
1198269e767SBrooks Davis.Xr signal 3
1208269e767SBrooks Davis.Sh STANDARDS
1218269e767SBrooks DavisThe
1228269e767SBrooks Davis.Fn thr_kill
1238269e767SBrooks Davisand
1248269e767SBrooks Davis.Fn thr_kill2
1258269e767SBrooks Davissystem calls are non-standard and are used by the
1268269e767SBrooks Davis.Lb libthr
1278269e767SBrooks Davisto implement
1288269e767SBrooks Davis.St -p1003.1-2001
1298269e767SBrooks Davis.Xr pthread 3
1308269e767SBrooks Davisfunctionality.
1318269e767SBrooks Davis.Sh HISTORY
1328269e767SBrooks DavisThe
1338269e767SBrooks Davis.Fn thr_kill
1348269e767SBrooks Davisand
1358269e767SBrooks Davis.Fn thr_kill2
1368269e767SBrooks Davissystem calls first appeared in
1378269e767SBrooks Davis.Fx 5.2 .
138