1.\" Copyright (c) 2007 The DragonFly Project. All rights reserved. 2.\" 3.\" This code is derived from software contributed to The DragonFly Project 4.\" by Simon 'corecode' Schubert <corecode@fs.ei.tum.de> 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in 14.\" the documentation and/or other materials provided with the 15.\" distribution. 16.\" 3. Neither the name of The DragonFly Project nor the names of its 17.\" contributors may be used to endorse or promote products derived 18.\" from this software without specific, prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 26.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 30.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31.\" SUCH DAMAGE. 32.\" 33.\" $DragonFly: src/lib/libc/sys/extexit.2,v 1.5 2008/05/02 02:05:04 swildner Exp $ 34.\" 35.Dd February 24, 2007 36.Dt EXTEXIT 2 37.Os 38.Sh NAME 39.Nm extexit 40.Nd terminate the calling lwp or process and perform action 41.Sh LIBRARY 42.Lb libc 43.Sh SYNOPSIS 44.In unistd.h 45.Ft void 46.Fn extexit "int how" "int status" "void *addr" 47.Sh DESCRIPTION 48The 49.Fn extexit 50function terminates a lwp or process and performs an action. 51This is a low level service routine not intended to be used 52from common user code. 53.Pp 54The 55.Fn extexit 56function can be used to either exit a lwp or a complete process. 57This is done by specifying either 58.Dv EXTEXIT_PROC 59or 60.Dv EXTEXIT_LWP 61in 62.Fa how . 63If exiting the process or if exiting the last lwp of a process, 64.Fn extexit 65behaves like 66.Xr _exit 2 67called with the 68.Fa status 69argument. 70.Pp 71Additionally, 72.Fn extexit 73can be used to perform certain actions when exiting. 74The following actions can be specified by 75.Em or Ns 'ing 76these values in the 77.Fa how 78argument: 79.Bl -tag -width ".Dv EXTEXIT_SIMPLE" 80.It Dv EXTEXIT_SETINT 81Set the integer variable pointer to by 82.Fa addr 83to the value of 84.Fa status . 85This is intended to enable other threads or processes to 86detect the termination of the calling lwp or process. 87.El 88.Sh RETURN VALUES 89The 90.Fn extexit 91function will only return if it was invoked 92with invalid arguments. In this case, 93.Va errno 94will be set to 95.Er EINVAL . 96In the case of a successful invocation, 97.Fn extexit 98will not return. 99.Pp 100In case of an error, the action specified in 101.Fa how 102will not be performed. 103If an error occurs while performing an action, the results are 104undefined. 105However, 106.Fn extexit 107will try hard to avoid such a situation. 108In any case, if an error occurs while performing an action, 109.Fn extexit 110will return. 111.Sh SEE ALSO 112.Xr _exit 2 , 113.Xr wait 2 , 114.Xr exit 3 115.Sh HISTORY 116The 117.Fn extexit 118function first appeared in 119.Dx 1.9 . 120