diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index 93c088f4187b..ada21725f517 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -53,7 +53,7 @@ ${SPSEUDO}: printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \ > ${.TARGET} -MAN+= _exit.2 accept.2 access.2 acct.2 adjtime.2 \ +MAN+= _exit.2 abort2.2 accept.2 access.2 acct.2 adjtime.2 \ aio_cancel.2 aio_error.2 aio_read.2 aio_return.2 \ aio_suspend.2 aio_waitcomplete.2 aio_write.2 \ bind.2 brk.2 chdir.2 chflags.2 \ diff --git a/lib/libc/sys/abort2.2 b/lib/libc/sys/abort2.2 new file mode 100644 index 000000000000..5f380804844d --- /dev/null +++ b/lib/libc/sys/abort2.2 @@ -0,0 +1,99 @@ +.\" Copyright (c) 2005 Wojciech A. Koszek +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.Dd December 23, 2005 +.Dt ABORT2 3 +.Os +.Sh NAME +.Nm abort2 +.Nd abort process with diagnostics. +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In stdlib.h +.Ft void +.Fo abort2 +.Fa "char *why" +.Fa "int argc" +.Fa "void **args" +.Fc +.Sh DESCRIPTION +The +.Fn abort2 +function causes the process to be killed and the specified diagnostic +message (with arguments) is delivered by the kernel to the +.Xr syslogd 8 +daemon. +.Pp +.Fa why +is NULL-terminated string containing reason of program termination (max 128 char long). +.Fa args +contains pointers which will be logged numerically (kernels '%p' +.Xr printf 9 +format). +.Fa nargs +is number of pointers in +.Fa args , +(max 16). +.Pp +.Fn abort2 +is intended for use in situations where continuation of the process +is impossible or for other definitive reasons unwanted, and normal +diagnostic channels cannot be trusted to deliver the message. +.Sh EXAMPLES +.Bd -literal -compact +#include + +if (weight_kg > max_load) { + void *ptrs[3]; + + ptrs[0] = (void*)weight_kg; + ptrs[1] = (void *)max_load; + ptrs[2] = haystack; + abort2("Camel overloaded", 3, ptrs); +} +.Ed +.Sh RETURN VALUES +The +.Fn abort2 +function +never returns. +.Pp +The process is killed sith SIGABRT unless the arguments to +.Fn abort2 +are invalid, in which case SIGKILL is used. +.Sh SEE ALSO +.Xr exit 3 , +.Xr abort 3 +.Sh HISTORY +The +.Fn abort2 +function first appeared in +.Fx 7.0 . +.Sh AUTHORS +Design: +.An "Poul-Henning Kamp" Aq phk@FreeBSD.org . +Implementation: +.An "Wojciech A. Koszek" Aq dunstan@freebsd.czest.pl .