xref: /src/lib/libc/stdlib/set_constraint_handler_s.3 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
1540cc17fSKonstantin Belousov.\" Copyright 2018 Yuri Pankov <yuripv@yuripv.net>
2540cc17fSKonstantin Belousov.\"
3540cc17fSKonstantin Belousov.\" Redistribution and use in source and binary forms, with or without
4540cc17fSKonstantin Belousov.\" modification, are permitted provided that the following conditions
5540cc17fSKonstantin Belousov.\" are met:
6540cc17fSKonstantin Belousov.\" 1. Redistributions of source code must retain the above copyright
7540cc17fSKonstantin Belousov.\"    notice, this list of conditions and the following disclaimer.
8540cc17fSKonstantin Belousov.\" 2. Redistributions in binary form must reproduce the above copyright
9540cc17fSKonstantin Belousov.\"    notice, this list of conditions and the following disclaimer in the
10540cc17fSKonstantin Belousov.\"    documentation and/or other materials provided with the distribution.
11540cc17fSKonstantin Belousov.\"
12540cc17fSKonstantin Belousov.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
13540cc17fSKonstantin Belousov.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14540cc17fSKonstantin Belousov.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15540cc17fSKonstantin Belousov.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
16540cc17fSKonstantin Belousov.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17540cc17fSKonstantin Belousov.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18540cc17fSKonstantin Belousov.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19540cc17fSKonstantin Belousov.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20540cc17fSKonstantin Belousov.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21540cc17fSKonstantin Belousov.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22540cc17fSKonstantin Belousov.\" SUCH DAMAGE.
23540cc17fSKonstantin Belousov.\"
24540cc17fSKonstantin Belousov.Dd August 18, 2018
25540cc17fSKonstantin Belousov.Dt SET_CONSTRAINT_HANDLER_S 3
26540cc17fSKonstantin Belousov.Os
27540cc17fSKonstantin Belousov.Sh NAME
28540cc17fSKonstantin Belousov.Nm set_constraint_handler_s ,
29540cc17fSKonstantin Belousov.Nm abort_handler_s ,
30540cc17fSKonstantin Belousov.Nm ignore_handler_s
31540cc17fSKonstantin Belousov.Nd runtime-constraint violation handling
32540cc17fSKonstantin Belousov.Sh LIBRARY
33540cc17fSKonstantin Belousov.Lb libc
34540cc17fSKonstantin Belousov.Sh SYNOPSIS
35540cc17fSKonstantin Belousov.Fd #define __STDC_WANT_LIB_EXT1__ 1
36540cc17fSKonstantin Belousov.In stdlib.h
37540cc17fSKonstantin Belousov.Ft constraint_handler_t
38540cc17fSKonstantin Belousov.Fo set_constraint_handler_s
39540cc17fSKonstantin Belousov.Fa "constraint_handler_t handler"
40540cc17fSKonstantin Belousov.Fc
41540cc17fSKonstantin Belousov.Ss Handler Prototype
42540cc17fSKonstantin Belousov.Ft typedef void
43540cc17fSKonstantin Belousov.Fo (*constraint_handler_t)
44540cc17fSKonstantin Belousov.Fa "const char * restrict msg"
45540cc17fSKonstantin Belousov.Fa "void * restrict ptr"
46540cc17fSKonstantin Belousov.Fa "errno_t error"
47540cc17fSKonstantin Belousov.Fc
48540cc17fSKonstantin Belousov.Ss Predefined Handlers
49540cc17fSKonstantin Belousov.Ft void
50540cc17fSKonstantin Belousov.Fo abort_handler_s
51540cc17fSKonstantin Belousov.Fa "const char * restrict msg"
52540cc17fSKonstantin Belousov.Fa "void * restrict ptr"
53540cc17fSKonstantin Belousov.Fa "errno_t error"
54540cc17fSKonstantin Belousov.Fc
55540cc17fSKonstantin Belousov.Ft void
56540cc17fSKonstantin Belousov.Fo ignore_handler_s
57540cc17fSKonstantin Belousov.Fa "const char * restrict msg"
58540cc17fSKonstantin Belousov.Fa "void * restrict ptr"
59540cc17fSKonstantin Belousov.Fa "errno_t error"
60540cc17fSKonstantin Belousov.Fc
61540cc17fSKonstantin Belousov.Sh DESCRIPTION
62540cc17fSKonstantin BelousovThe
63540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
64540cc17fSKonstantin Belousovfunction sets the runtime-constraint violation handler to be
65540cc17fSKonstantin Belousov.Fa handler .
66540cc17fSKonstantin Belousov.Pp
67540cc17fSKonstantin BelousovThe runtime-constraint handler is the callback function invoked when a library
68540cc17fSKonstantin Belousovfunction detects a runtime-constraint violation.
69540cc17fSKonstantin Belousov.Pp
70540cc17fSKonstantin BelousovThe arguments are as follows:
71540cc17fSKonstantin Belousov.Bl -tag -width "error"
72540cc17fSKonstantin Belousov.It Fa msg
73540cc17fSKonstantin BelousovA pointer to a character string describing the runtime-constraint violation.
74540cc17fSKonstantin Belousov.It Fa ptr
75540cc17fSKonstantin BelousovA
76540cc17fSKonstantin Belousov.Dv NULL
77540cc17fSKonstantin Belousovpointer.
78540cc17fSKonstantin Belousov.It Fa error
79540cc17fSKonstantin BelousovIf the function calling the handler has a return type declared as
80540cc17fSKonstantin Belousov.Vt errno_t ,
81540cc17fSKonstantin Belousovthe return value of the function is passed.
82540cc17fSKonstantin BelousovOtherwise, a positive value of type
83540cc17fSKonstantin Belousov.Vt errno_t
84540cc17fSKonstantin Belousovis passed.
85540cc17fSKonstantin Belousov.El
86540cc17fSKonstantin Belousov.Pp
87540cc17fSKonstantin BelousovOnly the most recent handler registered with
88540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
89540cc17fSKonstantin Belousovis called when a runtime-constraint violation occurs.
90540cc17fSKonstantin Belousov.Pp
91540cc17fSKonstantin BelousovThe implementation has a default constraint handler that is used if no calls to
92540cc17fSKonstantin Belousovthe
93540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
94540cc17fSKonstantin Belousovfunction have been made.
95540cc17fSKonstantin BelousovIf the
96540cc17fSKonstantin Belousov.Fa handler
97540cc17fSKonstantin Belousovargument to
98540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
99540cc17fSKonstantin Belousovis a
100540cc17fSKonstantin Belousov.Dv NULL
101540cc17fSKonstantin Belousovpointer, the default handler becomes the current constraint handler.
102540cc17fSKonstantin Belousov.Pp
103540cc17fSKonstantin BelousovThe
104540cc17fSKonstantin Belousov.Fn abort_handler_s
105540cc17fSKonstantin Belousovand
106540cc17fSKonstantin Belousov.Fn ignore_handler_s
107540cc17fSKonstantin Belousovare the standard-defined runtime-constraint handlers provided by the C library.
108540cc17fSKonstantin Belousov.Pp
109540cc17fSKonstantin BelousovThe
110540cc17fSKonstantin Belousov.Fn abort_handler_s
111540cc17fSKonstantin Belousovfunction writes the error message including the
112540cc17fSKonstantin Belousov.Fa msg
113540cc17fSKonstantin Belousovto
114540cc17fSKonstantin Belousov.Dv stderr
115540cc17fSKonstantin Belousovand calls the
116540cc17fSKonstantin Belousov.Xr abort 3
117540cc17fSKonstantin Belousovfunction.
118540cc17fSKonstantin BelousovThe
119540cc17fSKonstantin Belousov.Fn abort_handler_s
120540cc17fSKonstantin Belousovis currently the default runtime-constraint handler.
121540cc17fSKonstantin Belousov.Pp
122540cc17fSKonstantin BelousovThe
123540cc17fSKonstantin Belousov.Fn ignore_handler_s
124540cc17fSKonstantin Belousovsimply returns to its caller.
125540cc17fSKonstantin Belousov.Sh RETURN VALUES
126540cc17fSKonstantin BelousovThe
127540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
128540cc17fSKonstantin Belousovfunction returns a pointer to the previously registered handler, or
129540cc17fSKonstantin Belousov.Dv NULL
130540cc17fSKonstantin Belousovif none was previously registered.
131540cc17fSKonstantin Belousov.Pp
132540cc17fSKonstantin BelousovThe
133540cc17fSKonstantin Belousov.Fn abort_handler_s
134540cc17fSKonstantin Belousovfunction does not return to its caller.
135540cc17fSKonstantin Belousov.Pp
136540cc17fSKonstantin BelousovThe
137540cc17fSKonstantin Belousov.Fn ignore_handler_s
138540cc17fSKonstantin Belousovfunction returns no value.
139540cc17fSKonstantin Belousov.Sh STANDARDS
140540cc17fSKonstantin BelousovThe
141540cc17fSKonstantin Belousov.Fn set_constraint_handler_s
142540cc17fSKonstantin Belousovfunction conforms to
143540cc17fSKonstantin Belousov.St -isoC-2011
144540cc17fSKonstantin BelousovK.3.6.1.1.
145540cc17fSKonstantin Belousov.Sh AUTHORS
146540cc17fSKonstantin BelousovThis manual page was written by
147540cc17fSKonstantin Belousov.An Yuri Pankov Aq Mt yuripv@yuripv.net .
148