Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / man / man3 / Tcl_Panic.3
CommitLineData
920dae64
AT
1'\"
2'\" See the file "license.terms" for information on usage and redistribution
3'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
4'\"
5'\" RCS: @(#) $Id: Panic.3,v 1.3 2001/08/25 20:14:06 dgp Exp $
6'\"
7'\" The definitions below are for supplemental macros used in Tcl/Tk
8'\" manual entries.
9'\"
10'\" .AP type name in/out ?indent?
11'\" Start paragraph describing an argument to a library procedure.
12'\" type is type of argument (int, etc.), in/out is either "in", "out",
13'\" or "in/out" to describe whether procedure reads or modifies arg,
14'\" and indent is equivalent to second arg of .IP (shouldn't ever be
15'\" needed; use .AS below instead)
16'\"
17'\" .AS ?type? ?name?
18'\" Give maximum sizes of arguments for setting tab stops. Type and
19'\" name are examples of largest possible arguments that will be passed
20'\" to .AP later. If args are omitted, default tab stops are used.
21'\"
22'\" .BS
23'\" Start box enclosure. From here until next .BE, everything will be
24'\" enclosed in one large box.
25'\"
26'\" .BE
27'\" End of box enclosure.
28'\"
29'\" .CS
30'\" Begin code excerpt.
31'\"
32'\" .CE
33'\" End code excerpt.
34'\"
35'\" .VS ?version? ?br?
36'\" Begin vertical sidebar, for use in marking newly-changed parts
37'\" of man pages. The first argument is ignored and used for recording
38'\" the version when the .VS was added, so that the sidebars can be
39'\" found and removed when they reach a certain age. If another argument
40'\" is present, then a line break is forced before starting the sidebar.
41'\"
42'\" .VE
43'\" End of vertical sidebar.
44'\"
45'\" .DS
46'\" Begin an indented unfilled display.
47'\"
48'\" .DE
49'\" End of indented unfilled display.
50'\"
51'\" .SO
52'\" Start of list of standard options for a Tk widget. The
53'\" options follow on successive lines, in four columns separated
54'\" by tabs.
55'\"
56'\" .SE
57'\" End of list of standard options for a Tk widget.
58'\"
59'\" .OP cmdName dbName dbClass
60'\" Start of description of a specific option. cmdName gives the
61'\" option's name as specified in the class command, dbName gives
62'\" the option's name in the option database, and dbClass gives
63'\" the option's class in the option database.
64'\"
65'\" .UL arg1 arg2
66'\" Print arg1 underlined, then print arg2 normally.
67'\"
68'\" RCS: @(#) $Id: man.macros,v 1.4 2000/08/25 06:18:32 ericm Exp $
69'\"
70'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
71.if t .wh -1.3i ^B
72.nr ^l \n(.l
73.ad b
74'\" # Start an argument description
75.de AP
76.ie !"\\$4"" .TP \\$4
77.el \{\
78. ie !"\\$2"" .TP \\n()Cu
79. el .TP 15
80.\}
81.ta \\n()Au \\n()Bu
82.ie !"\\$3"" \{\
83\&\\$1 \\fI\\$2\\fP (\\$3)
84.\".b
85.\}
86.el \{\
87.br
88.ie !"\\$2"" \{\
89\&\\$1 \\fI\\$2\\fP
90.\}
91.el \{\
92\&\\fI\\$1\\fP
93.\}
94.\}
95..
96'\" # define tabbing values for .AP
97.de AS
98.nr )A 10n
99.if !"\\$1"" .nr )A \\w'\\$1'u+3n
100.nr )B \\n()Au+15n
101.\"
102.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
103.nr )C \\n()Bu+\\w'(in/out)'u+2n
104..
105.AS Tcl_Interp Tcl_CreateInterp in/out
106'\" # BS - start boxed text
107'\" # ^y = starting y location
108'\" # ^b = 1
109.de BS
110.br
111.mk ^y
112.nr ^b 1u
113.if n .nf
114.if n .ti 0
115.if n \l'\\n(.lu\(ul'
116.if n .fi
117..
118'\" # BE - end boxed text (draw box now)
119.de BE
120.nf
121.ti 0
122.mk ^t
123.ie n \l'\\n(^lu\(ul'
124.el \{\
125.\" Draw four-sided box normally, but don't draw top of
126.\" box if the box started on an earlier page.
127.ie !\\n(^b-1 \{\
128\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
129.\}
130.el \}\
131\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132.\}
133.\}
134.fi
135.br
136.nr ^b 0
137..
138'\" # VS - start vertical sidebar
139'\" # ^Y = starting y location
140'\" # ^v = 1 (for troff; for nroff this doesn't matter)
141.de VS
142.if !"\\$2"" .br
143.mk ^Y
144.ie n 'mc \s12\(br\s0
145.el .nr ^v 1u
146..
147'\" # VE - end of vertical sidebar
148.de VE
149.ie n 'mc
150.el \{\
151.ev 2
152.nf
153.ti 0
154.mk ^t
155\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
156.sp -1
157.fi
158.ev
159.\}
160.nr ^v 0
161..
162'\" # Special macro to handle page bottom: finish off current
163'\" # box/sidebar if in box/sidebar mode, then invoked standard
164'\" # page bottom macro.
165.de ^B
166.ev 2
167'ti 0
168'nf
169.mk ^t
170.if \\n(^b \{\
171.\" Draw three-sided box if this is the box's first page,
172.\" draw two sides but no top otherwise.
173.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
174.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
175.\}
176.if \\n(^v \{\
177.nr ^x \\n(^tu+1v-\\n(^Yu
178\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
179.\}
180.bp
181'fi
182.ev
183.if \\n(^b \{\
184.mk ^y
185.nr ^b 2
186.\}
187.if \\n(^v \{\
188.mk ^Y
189.\}
190..
191'\" # DS - begin display
192.de DS
193.RS
194.nf
195.sp
196..
197'\" # DE - end display
198.de DE
199.fi
200.RE
201.sp
202..
203'\" # SO - start of list of standard options
204.de SO
205.SH "STANDARD OPTIONS"
206.LP
207.nf
208.ta 5.5c 11c
209.ft B
210..
211'\" # SE - end of list of standard options
212.de SE
213.fi
214.ft R
215.LP
216See the \\fBoptions\\fR manual entry for details on the standard options.
217..
218'\" # OP - start of full description for a single option
219.de OP
220.LP
221.nf
222.ta 4c
223Command-Line Name: \\fB\\$1\\fR
224Database Name: \\fB\\$2\\fR
225Database Class: \\fB\\$3\\fR
226.fi
227.IP
228..
229'\" # CS - begin code excerpt
230.de CS
231.RS
232.nf
233.ta .25i .5i .75i 1i
234..
235'\" # CE - end code excerpt
236.de CE
237.fi
238.RE
239..
240.de UL
241\\$1\l'|0\(ul'\\$2
242..
243.TH Tcl_Panic 3 8.4 Tcl "Tcl Library Procedures"
244.BS
245'\" Note: do not modify the .SH NAME line immediately below!
246.SH NAME
247Tcl_Panic, Tcl_PanicVA, Tcl_SetPanicProc, panic, panicVA \- report fatal error and abort
248.SH SYNOPSIS
249.nf
250\fB#include <tcl.h>\fR
251.sp
252void
253\fBTcl_Panic\fR(\fIformat\fR, \fIarg\fR, \fIarg\fR, \fI...\fR)
254.sp
255void
256\fBTcl_PanicVA\fR(\fIformat\fR, \fIargList\fR)
257.sp
258void
259\fBTcl_SetPanicProc\fR(\fIpanicProc\fR)
260.sp
261void
262\fBpanic\fR(\fIformat\fR, \fIarg\fR, \fIarg\fR, \fI...\fR)
263.sp
264void
265\fBpanicVA\fR(\fIformat\fR, \fIargList\fR)
266.sp
267.SH ARGUMENTS
268.AS Tcl_PanicProc *panicProc
269.AP "CONST char*" format in
270A printf-style format string.
271.AP "" arg in
272Arguments matching the format string.
273.AP va_list argList in
274An argument list of arguments matching the format string.
275Must have been initialized using \fBTCL_VARARGS_START\fR,
276and cleared using \fBva_end\fR.
277.AP Tcl_PanicProc *panicProc in
278Procedure to report fatal error message and abort.
279
280.BE
281
282.SH DESCRIPTION
283.PP
284When the Tcl library detects that its internal data structures are in an
285inconsistent state, or that its C procedures have been called in a
286manner inconsistent with their documentation, it calls \fBTcl_Panic\fR
287to display a message describing the error and abort the process. The
288\fIformat\fR argument is a format string describing how to format the
289remaining arguments \fIarg\fR into an error message, according to the
290same formatting rules used by the \fBprintf\fR family of functions. The
291same formatting rules are also used by the builtin Tcl command
292\fBformat\fR.
293.PP
294In a freshly loaded Tcl library, \fBTcl_Panic\fR prints the formatted
295error message to the standard error file of the process, and then
296calls \fBabort\fR to terminate the process. \fBTcl_Panic\fR does not
297return.
298.PP
299\fBTcl_SetPanicProc\fR may be used to modify the behavior of
300\fBTcl_Panic\fR. The \fIpanicProc\fR argument should match the
301type \fBTcl_PanicProc\fR:
302.PP
303.CS
304typedef void Tcl_PanicProc(
305 CONST char *\fBformat\fR,
306 \fBarg\fR, \fBarg\fR,...);
307.CE
308.PP
309After \fBTcl_SetPanicProc\fR returns, any future calls to
310\fBTcl_Panic\fR will call \fIpanicProc\fR, passing along the
311\fIformat\fR and \fIarg\fR arguments. To maintain consistency with the
312callers of \fBTcl_Panic\fR, \fIpanicProc\fR must not return; it must
313call \fBabort\fR. \fIpanicProc\fR should avoid making calls into the
314Tcl library, or into other libraries that may call the Tcl library,
315since the original call to \fBTcl_Panic\fR indicates the Tcl library is
316not in a state of reliable operation.
317.PP
318The typical use of \fBTcl_SetPanicProc\fR arranges for the error message
319to be displayed or reported in a manner more suitable for the
320application or the platform. As an example, the Windows implementation
321of \fBwish\fR calls \fBTcl_SetPanicProc\fR to force all panic messages
322to be displayed in a system dialog box, rather than to be printed to the
323standard error file (usually not visible under Windows).
324.PP
325Although the primary callers of \fBTcl_Panic\fR are the procedures of
326the Tcl library, \fBTcl_Panic\fR is a public function and may be called
327by any extension or application that wishes to abort the process and
328have a panic message displayed the same way that panic messages from Tcl
329will be displayed.
330.PP
331\fBTcl_PanicVA\fR is the same as \fBTcl_Panic\fR except that instead of
332taking a variable number of arguments it takes an argument list. The
333procedures \fBpanic\fR and \fBpanicVA\fR are synonyms (implemented as
334macros) for \fBTcl_Panic\fR and \fBTcl_PanicVA\fR, respectively. They
335exist to support old code; new code should use direct calls to
336\fBTcl_Panic\fR or \fBTcl_PanicVA\fR.
337
338.SH "SEE ALSO"
339abort(3), printf(3), exec(n), format(n)
340
341.SH KEYWORDS
342abort, fatal, error
343