From Jason Turner

[support.signal]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpwyytxvx5/{from.md → to.md} +245 -0
tmp/tmpwyytxvx5/{from.md → to.md} RENAMED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Signal handlers <a id="support.signal">[[support.signal]]</a>
2
+
3
+ A call to the function `signal` synchronizes with any resulting
4
+ invocation of the signal handler so installed.
5
+
6
+ A *plain lock-free atomic operation* is an invocation of a function `f`
7
+ from Clause  [[atomics]], such that:
8
+
9
+ - `f` is the function `atomic_is_lock_free()`, or
10
+ - `f` is the member function `is_lock_free()`, or
11
+ - `f` is a non-static member function invoked on an object `A`, such
12
+ that `A.is_lock_free()` yields `true`, or
13
+ - `f` is a non-member function, and for every pointer-to-atomic argument
14
+ `A` passed to `f`, `atomic_is_lock_free(A)` yields `true`.
15
+
16
+ An evaluation is *signal-safe* unless it includes one of the following:
17
+
18
+ - a call to any standard library function, except for plain lock-free
19
+ atomic operations and functions explicitly identified as signal-safe.
20
+ \[*Note 1*: This implicitly excludes the use of `new` and `delete`
21
+ expressions that rely on a library-provided memory
22
+ allocator. — *end note*]
23
+ - an access to an object with thread storage duration;
24
+ - a `dynamic_cast` expression;
25
+ - throwing of an exception;
26
+ - control entering a *try-block* or *function-try-block*;
27
+ - initialization of a variable with static storage duration requiring
28
+ dynamic initialization ([[basic.start.dynamic]], [[stmt.dcl]]) [^35];
29
+ or
30
+ - waiting for the completion of the initialization of a variable with
31
+ static storage duration ([[stmt.dcl]]).
32
+
33
+ A signal handler invocation has undefined behavior if it includes an
34
+ evaluation that is not signal-safe.
35
+
36
+ The function `signal` is signal-safe if it is invoked with the first
37
+ argument equal to the signal number corresponding to the signal that
38
+ caused the invocation of the handler.
39
+
40
+ ISO C 7.14.
41
+
42
+ <!-- Link reference definitions -->
43
+ [alg.c.library]: algorithms.md#alg.c.library
44
+ [alloc.errors]: #alloc.errors
45
+ [atomics]: atomics.md#atomics
46
+ [bad.alloc]: #bad.alloc
47
+ [bad.cast]: #bad.cast
48
+ [bad.exception]: #bad.exception
49
+ [bad.typeid]: #bad.typeid
50
+ [basic.align]: basic.md#basic.align
51
+ [basic.def.odr]: basic.md#basic.def.odr
52
+ [basic.fundamental]: basic.md#basic.fundamental
53
+ [basic.life]: basic.md#basic.life
54
+ [basic.start]: basic.md#basic.start
55
+ [basic.start.dynamic]: basic.md#basic.start.dynamic
56
+ [basic.start.term]: basic.md#basic.start.term
57
+ [basic.stc.dynamic]: basic.md#basic.stc.dynamic
58
+ [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
59
+ [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
60
+ [basic.stc.dynamic.safety]: basic.md#basic.stc.dynamic.safety
61
+ [c.locales]: localization.md#c.locales
62
+ [c.malloc]: utilities.md#c.malloc
63
+ [c.math.abs]: numerics.md#c.math.abs
64
+ [c.math.rand]: numerics.md#c.math.rand
65
+ [c.mb.wcs]: strings.md#c.mb.wcs
66
+ [cfloat.syn]: #cfloat.syn
67
+ [class]: class.md#class
68
+ [class.free]: special.md#class.free
69
+ [climits.syn]: #climits.syn
70
+ [complex]: numerics.md#complex
71
+ [constraints]: library.md#constraints
72
+ [conv.ptr]: conv.md#conv.ptr
73
+ [conv.qual]: conv.md#conv.qual
74
+ [conv.rank]: conv.md#conv.rank
75
+ [csetjmp.syn]: #csetjmp.syn
76
+ [csignal.syn]: #csignal.syn
77
+ [cstdarg.syn]: #cstdarg.syn
78
+ [cstddef.syn]: #cstddef.syn
79
+ [cstdint]: #cstdint
80
+ [cstdint.syn]: #cstdint.syn
81
+ [cstdlib.syn]: #cstdlib.syn
82
+ [dcl.init.list]: dcl.md#dcl.init.list
83
+ [denorm.style]: #denorm.style
84
+ [except.handle]: except.md#except.handle
85
+ [except.nested]: #except.nested
86
+ [except.special]: except.md#except.special
87
+ [except.terminate]: except.md#except.terminate
88
+ [except.uncaught]: except.md#except.uncaught
89
+ [exception]: #exception
90
+ [exception.syn]: #exception.syn
91
+ [exception.terminate]: #exception.terminate
92
+ [expr.add]: expr.md#expr.add
93
+ [expr.delete]: expr.md#expr.delete
94
+ [expr.dynamic.cast]: expr.md#expr.dynamic.cast
95
+ [expr.new]: expr.md#expr.new
96
+ [expr.prim.lambda]: expr.md#expr.prim.lambda
97
+ [expr.sizeof]: expr.md#expr.sizeof
98
+ [expr.typeid]: expr.md#expr.typeid
99
+ [fp.style]: #fp.style
100
+ [get.new.handler]: #get.new.handler
101
+ [get.terminate]: #get.terminate
102
+ [hardware.interference]: #hardware.interference
103
+ [initializer_list.syn]: #initializer_list.syn
104
+ [intro.memory]: intro.md#intro.memory
105
+ [intro.multithread]: intro.md#intro.multithread
106
+ [language.support]: #language.support
107
+ [library.c]: library.md#library.c
108
+ [limits.syn]: #limits.syn
109
+ [locale.codecvt]: localization.md#locale.codecvt
110
+ [memory]: utilities.md#memory
111
+ [multibyte.strings]: library.md#multibyte.strings
112
+ [new.badlength]: #new.badlength
113
+ [new.delete]: #new.delete
114
+ [new.delete.array]: #new.delete.array
115
+ [new.delete.dataraces]: #new.delete.dataraces
116
+ [new.delete.placement]: #new.delete.placement
117
+ [new.delete.single]: #new.delete.single
118
+ [new.handler]: #new.handler
119
+ [new.syn]: #new.syn
120
+ [nullablepointer.requirements]: library.md#nullablepointer.requirements
121
+ [numeric.limits]: #numeric.limits
122
+ [numeric.limits.members]: #numeric.limits.members
123
+ [numeric.special]: #numeric.special
124
+ [propagation]: #propagation
125
+ [ptr.launder]: #ptr.launder
126
+ [res.on.data.races]: library.md#res.on.data.races
127
+ [round.style]: #round.style
128
+ [set.new.handler]: #set.new.handler
129
+ [set.terminate]: #set.terminate
130
+ [stmt.dcl]: stmt.md#stmt.dcl
131
+ [string.classes]: strings.md#string.classes
132
+ [support.dynamic]: #support.dynamic
133
+ [support.exception]: #support.exception
134
+ [support.general]: #support.general
135
+ [support.initlist]: #support.initlist
136
+ [support.initlist.access]: #support.initlist.access
137
+ [support.initlist.cons]: #support.initlist.cons
138
+ [support.initlist.range]: #support.initlist.range
139
+ [support.limits]: #support.limits
140
+ [support.limits.general]: #support.limits.general
141
+ [support.rtti]: #support.rtti
142
+ [support.runtime]: #support.runtime
143
+ [support.signal]: #support.signal
144
+ [support.start.term]: #support.start.term
145
+ [support.types]: #support.types
146
+ [support.types.byteops]: #support.types.byteops
147
+ [support.types.layout]: #support.types.layout
148
+ [support.types.nullptr]: #support.types.nullptr
149
+ [tab:lang.sup.lib.summary]: #tab:lang.sup.lib.summary
150
+ [temp.dep.constexpr]: temp.md#temp.dep.constexpr
151
+ [temp.dep.expr]: temp.md#temp.dep.expr
152
+ [temp.variadic]: temp.md#temp.variadic
153
+ [terminate]: #terminate
154
+ [terminate.handler]: #terminate.handler
155
+ [type.info]: #type.info
156
+ [typeinfo.syn]: #typeinfo.syn
157
+ [uncaught.exceptions]: #uncaught.exceptions
158
+
159
+ [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
160
+
161
+ [^2]: Note that `offsetof` is required to work as specified even if
162
+ unary `operator&` is overloaded for any of the types involved.
163
+
164
+ [^3]: Equivalent to `CHAR_MIN`, `SHRT_MIN`, `FLT_MIN`, `DBL_MIN`, etc.
165
+
166
+ [^4]: Equivalent to `CHAR_MAX`, `SHRT_MAX`, `FLT_MAX`, `DBL_MAX`, etc.
167
+
168
+ [^5]: `lowest()` is necessary because not all floating-point
169
+ representations have a smallest (most negative) value that is the
170
+ negative of the largest (most positive) finite value.
171
+
172
+ [^6]: Equivalent to `FLT_MANT_DIG`, `DBL_MANT_DIG`, `LDBL_MANT_DIG`.
173
+
174
+ [^7]: Equivalent to `FLT_DIG`, `DBL_DIG`, `LDBL_DIG`.
175
+
176
+ [^8]: Equivalent to `FLT_RADIX`.
177
+
178
+ [^9]: Distinguishes types with bases other than 2 (e.g. BCD).
179
+
180
+ [^10]: Equivalent to `FLT_EPSILON`, `DBL_EPSILON`, `LDBL_EPSILON`.
181
+
182
+ [^11]: Rounding error is described in LIA-1 Section 5.2.4 and Annex C
183
+ Rationale Section C.5.2.4 — Rounding and rounding constants.
184
+
185
+ [^12]: Equivalent to `FLT_MIN_EXP`, `DBL_MIN_EXP`, `LDBL_MIN_EXP`.
186
+
187
+ [^13]: Equivalent to `FLT_MIN_10_EXP`, `DBL_MIN_10_EXP`,
188
+ `LDBL_MIN_10_EXP`.
189
+
190
+ [^14]: Equivalent to `FLT_MAX_EXP`, `DBL_MAX_EXP`, `LDBL_MAX_EXP`.
191
+
192
+ [^15]: Equivalent to `FLT_MAX_10_EXP`, `DBL_MAX_10_EXP`,
193
+ `LDBL_MAX_10_EXP`.
194
+
195
+ [^16]: Required by LIA-1.
196
+
197
+ [^17]: Required by LIA-1.
198
+
199
+ [^18]: Required by LIA-1.
200
+
201
+ [^19]: See ISO/IEC/IEEE 60559.
202
+
203
+ [^20]: Required by LIA-1.
204
+
205
+ [^21]: Required by LIA-1.
206
+
207
+ [^22]: Required by LIA-1.
208
+
209
+ [^23]: Required by LIA-1.
210
+
211
+ [^24]: ISO/IEC/IEEE 60559:2011 is the same as IEEE 754-2008.
212
+
213
+ [^25]: Required by LIA-1.
214
+
215
+ [^26]: Required by LIA-1.
216
+
217
+ [^27]: Required by LIA-1.
218
+
219
+ [^28]: Refer to ISO/IEC/IEEE 60559. Required by LIA-1.
220
+
221
+ [^29]: Equivalent to `FLT_ROUNDS`. Required by LIA-1.
222
+
223
+ [^30]: A function is called for every time it is registered.
224
+
225
+ [^31]: Objects with automatic storage duration are all destroyed in a
226
+ program whose `main` function ([[basic.start.main]]) contains no
227
+ automatic objects and executes the call to `exit()`. Control can be
228
+ transferred directly to such a `main` function by throwing an
229
+ exception that is caught in `main`.
230
+
231
+ [^32]: The macros `EXIT_FAILURE` and `EXIT_SUCCESS` are defined in
232
+ `<cstdlib>`.
233
+
234
+ [^33]: It is not the direct responsibility of `operator new[]` or
235
+ `operator delete[]` to note the repetition count or element size of
236
+ the array. Those operations are performed elsewhere in the array
237
+ `new` and `delete` expressions. The array `new` expression, may,
238
+ however, increase the `size` argument to `operator new[]` to obtain
239
+ space to store supplemental information.
240
+
241
+ [^34]: Note that `va_start` is required to work as specified even if
242
+ unary `operator&` is overloaded for the type of `parmN`.
243
+
244
+ [^35]: Such initialization might occur because it is the first odr-use (
245
+ [[basic.def.odr]]) of that variable.