1163019Sdavidxu/*- 2163019Sdavidxu * Copyright (c) 2006 David Xu <davidxu@freebsd.org> 3163019Sdavidxu * All rights reserved. 4163019Sdavidxu * 5163019Sdavidxu * Redistribution and use in source and binary forms, with or without 6163019Sdavidxu * modification, are permitted provided that the following conditions 7163019Sdavidxu * are met: 8163019Sdavidxu * 1. Redistributions of source code must retain the above copyright 9163019Sdavidxu * notice, this list of conditions and the following disclaimer. 10163019Sdavidxu * 2. Redistributions in binary form must reproduce the above copyright 11163019Sdavidxu * notice, this list of conditions and the following disclaimer in the 12163019Sdavidxu * documentation and/or other materials provided with the distribution. 13163019Sdavidxu * 14163019Sdavidxu * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15163019Sdavidxu * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16163019Sdavidxu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17163019Sdavidxu * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18163019Sdavidxu * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19163019Sdavidxu * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20163019Sdavidxu * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21163019Sdavidxu * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22163019Sdavidxu * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23163019Sdavidxu * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24163019Sdavidxu * SUCH DAMAGE. 25163019Sdavidxu * 26163019Sdavidxu * $FreeBSD$ 27163019Sdavidxu */ 28163019Sdavidxu 29163019Sdavidxu#ifndef _COMPAT_FREEBSD32_SIGNAL_H_ 30163019Sdavidxu#define _COMPAT_FREEBSD32_SIGNAL_H_ 31163019Sdavidxu 32163019Sdavidxustruct sigaltstack32 { 33163019Sdavidxu u_int32_t ss_sp; /* signal stack base */ 34163019Sdavidxu u_int32_t ss_size; /* signal stack length */ 35163019Sdavidxu int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ 36163019Sdavidxu}; 37163019Sdavidxu 38163019Sdavidxuunion sigval32 { 39185898Sbz int sival_int; 40185898Sbz u_int32_t sival_ptr; 41185898Sbz /* 6.0 compatibility */ 42163019Sdavidxu int sigval_int; 43163019Sdavidxu u_int32_t sigval_ptr; 44163019Sdavidxu}; 45163019Sdavidxu 46163019Sdavidxustruct siginfo32 { 47163019Sdavidxu int si_signo; /* signal number */ 48163019Sdavidxu int si_errno; /* errno association */ 49163019Sdavidxu int si_code; /* signal code */ 50163019Sdavidxu int32_t si_pid; /* sending process */ 51163019Sdavidxu u_int32_t si_uid; /* sender's ruid */ 52163019Sdavidxu int si_status; /* exit value */ 53163019Sdavidxu u_int32_t si_addr; /* faulting instruction */ 54163019Sdavidxu union sigval32 si_value; /* signal value */ 55163019Sdavidxu union { 56163019Sdavidxu struct { 57163019Sdavidxu int _trapno;/* machine specific trap code */ 58163019Sdavidxu } _fault; 59163019Sdavidxu struct { 60163019Sdavidxu int _timerid; 61163019Sdavidxu int _overrun; 62163019Sdavidxu } _timer; 63163019Sdavidxu struct { 64163019Sdavidxu int _mqd; 65163019Sdavidxu } _mesgq; 66163019Sdavidxu struct { 67163019Sdavidxu int _band; /* band event for SIGPOLL */ 68163019Sdavidxu } _poll; /* was this ever used ? */ 69163019Sdavidxu struct { 70163019Sdavidxu int __spare1__; 71163019Sdavidxu int __spare2__[7]; 72163019Sdavidxu } __spare__; 73163019Sdavidxu } _reason; 74163019Sdavidxu}; 75163019Sdavidxu 76185898Sbzstruct osigevent32 { 77185898Sbz int sigev_notify; /* Notification type */ 78185898Sbz union { 79185898Sbz int __sigev_signo; /* Signal number */ 80185898Sbz int __sigev_notify_kqueue; 81185898Sbz } __sigev_u; 82185898Sbz union sigval32 sigev_value; /* Signal value */ 83185898Sbz}; 84185898Sbz 85185898Sbzstruct sigevent32 { 86185898Sbz int sigev_notify; /* Notification type */ 87185898Sbz int sigev_signo; /* Signal number */ 88185898Sbz union sigval32 sigev_value; /* Signal value */ 89185898Sbz union { 90185898Sbz __lwpid_t _threadid; 91185898Sbz struct { 92185898Sbz uint32_t _function; 93185898Sbz uint32_t _attribute; 94185898Sbz } _sigev_thread; 95232290Sdavidxu unsigned short _kevent_flags; 96185898Sbz uint32_t __spare__[8]; 97185898Sbz } _sigev_un; 98185898Sbz}; 99185898Sbz 100254125Skibstruct sigevent; 101254125Skibint convert_sigevent32(struct sigevent32 *sig32, struct sigevent *sig); 102209687Skibvoid siginfo_to_siginfo32(const siginfo_t *src, struct siginfo32 *dst); 103163019Sdavidxu 104163019Sdavidxu#endif /* !_COMPAT_FREEBSD32_SIGNAL_H_ */ 105