191078fcaSMarcel Moolenaar /*- 291078fcaSMarcel Moolenaar * Copyright (c) 1999 Marcel Moolenaar 391078fcaSMarcel Moolenaar * All rights reserved. 491078fcaSMarcel Moolenaar * 591078fcaSMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 691078fcaSMarcel Moolenaar * modification, are permitted provided that the following conditions 791078fcaSMarcel Moolenaar * are met: 891078fcaSMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 991078fcaSMarcel Moolenaar * notice, this list of conditions and the following disclaimer 1091078fcaSMarcel Moolenaar * in this position and unchanged. 1191078fcaSMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 1291078fcaSMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 1391078fcaSMarcel Moolenaar * documentation and/or other materials provided with the distribution. 1491078fcaSMarcel Moolenaar * 3. The name of the author may not be used to endorse or promote products 1591078fcaSMarcel Moolenaar * derived from this software without specific prior written permission. 1691078fcaSMarcel Moolenaar * 1791078fcaSMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1891078fcaSMarcel Moolenaar * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1991078fcaSMarcel Moolenaar * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2091078fcaSMarcel Moolenaar * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2191078fcaSMarcel Moolenaar * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2291078fcaSMarcel Moolenaar * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2391078fcaSMarcel Moolenaar * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2491078fcaSMarcel Moolenaar * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2591078fcaSMarcel Moolenaar * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2691078fcaSMarcel Moolenaar * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2791078fcaSMarcel Moolenaar * 2891078fcaSMarcel Moolenaar * $FreeBSD$ 2991078fcaSMarcel Moolenaar */ 3091078fcaSMarcel Moolenaar 3191078fcaSMarcel Moolenaar #ifndef _MACHINE_SIGFRAME_H_ 3291078fcaSMarcel Moolenaar #define _MACHINE_SIGFRAME_H_ 1 3391078fcaSMarcel Moolenaar 3491078fcaSMarcel Moolenaar struct osigframe { 3591078fcaSMarcel Moolenaar /* 3691078fcaSMarcel Moolenaar * The first three members may be used by applications. 3791078fcaSMarcel Moolenaar */ 3891078fcaSMarcel Moolenaar 3991078fcaSMarcel Moolenaar register_t sf_signum; 4091078fcaSMarcel Moolenaar 4191078fcaSMarcel Moolenaar /* 4291078fcaSMarcel Moolenaar * Either 'int' for old-style FreeBSD handler or 'siginfo_t *' 4391078fcaSMarcel Moolenaar * pointing to sf_siginfo for SA_SIGINFO handlers. 4491078fcaSMarcel Moolenaar */ 4591078fcaSMarcel Moolenaar register_t sf_arg2; 4691078fcaSMarcel Moolenaar 4791078fcaSMarcel Moolenaar /* Points to sf_siginfo.si_sc. */ 4891078fcaSMarcel Moolenaar register_t sf_scp; 4991078fcaSMarcel Moolenaar 5091078fcaSMarcel Moolenaar /* 5191078fcaSMarcel Moolenaar * The following arguments are not constrained by the 5291078fcaSMarcel Moolenaar * function call protocol. 5391078fcaSMarcel Moolenaar * Applications are not supposed to access these members, 5491078fcaSMarcel Moolenaar * except using the pointers we provide in the first three 5591078fcaSMarcel Moolenaar * arguments. 5691078fcaSMarcel Moolenaar */ 5791078fcaSMarcel Moolenaar 5891078fcaSMarcel Moolenaar char *sf_addr; 5991078fcaSMarcel Moolenaar 6091078fcaSMarcel Moolenaar union { 6191078fcaSMarcel Moolenaar __osiginfohandler_t *sf_action; 6291078fcaSMarcel Moolenaar __sighandler_t *sf_handler; 6391078fcaSMarcel Moolenaar } sf_ahu; 6491078fcaSMarcel Moolenaar 6591078fcaSMarcel Moolenaar /* In the SA_SIGINFO case, sf_arg2 points here. */ 6691078fcaSMarcel Moolenaar osiginfo_t sf_siginfo; 6791078fcaSMarcel Moolenaar }; 6891078fcaSMarcel Moolenaar 6991078fcaSMarcel Moolenaar struct sigframe { 7091078fcaSMarcel Moolenaar /* 7191078fcaSMarcel Moolenaar * The first three members may be used by applications. 7291078fcaSMarcel Moolenaar */ 7391078fcaSMarcel Moolenaar register_t sf_signum; 7491078fcaSMarcel Moolenaar register_t sf_siginfo; /* code or pointer to sf_si */ 7591078fcaSMarcel Moolenaar register_t sf_ucontext; /* points to sf_uc */ 7691078fcaSMarcel Moolenaar register_t __spare__; /* Align sf_ahu */ 7791078fcaSMarcel Moolenaar union { 7891078fcaSMarcel Moolenaar __siginfohandler_t *sf_action; 7991078fcaSMarcel Moolenaar __sighandler_t *sf_handler; 8091078fcaSMarcel Moolenaar } sf_ahu; 8191078fcaSMarcel Moolenaar register_t sf_sigreturn; /* sigreturn to use */ 8291078fcaSMarcel Moolenaar siginfo_t sf_si; /* = *sf_siginfo (SA_SIGINFO case) */ 8391078fcaSMarcel Moolenaar ucontext_t sf_uc; /* = *sf_ucontext */ 8491078fcaSMarcel Moolenaar }; 8591078fcaSMarcel Moolenaar 8691078fcaSMarcel Moolenaar #endif /* _MACHINE_SIGFRAME_H_ */ 87