ucontext.h revision 3988:2365e71eafb7
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* Copyright (c) 1988 AT&T */ 22/* All Rights Reserved */ 23 24 25/* 26 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 27 * Use is subject to license terms. 28 */ 29 30#ifndef _UCONTEXT_H 31#define _UCONTEXT_H 32 33#pragma ident "%Z%%M% %I% %E% SMI" 34 35#include <sys/ucontext.h> 36 37#if !defined(_XPG4_2) || defined(__EXTENSIONS__) 38#include <sys/siginfo.h> 39#include <execinfo.h> 40#endif 41 42#ifdef __cplusplus 43extern "C" { 44#endif 45 46#ifdef __sparc 47#ifdef __PRAGMA_REDEFINE_EXTNAME 48#pragma redefine_extname makecontext __makecontext_v2 49#else 50#define makecontext __makecontext_v2 51#endif 52#endif 53 54#if defined(__STDC__) 55 56extern int getcontext(ucontext_t *); 57#pragma unknown_control_flow(getcontext) 58extern int setcontext(const ucontext_t *) __NORETURN; 59extern int swapcontext(ucontext_t *_RESTRICT_KYWD, 60 const ucontext_t *_RESTRICT_KYWD); 61extern void makecontext(ucontext_t *, void(*)(), int, ...); 62#if !defined(_XPG4_2) || defined(__EXTENSIONS__) 63extern int walkcontext(const ucontext_t *, int (*)(uintptr_t, int, void *), 64 void *); 65extern int printstack(int); 66extern int addrtosymstr(void *, char *, int); 67extern int getustack(stack_t **); 68extern int setustack(stack_t *); 69 70extern int stack_getbounds(stack_t *); 71extern int stack_setbounds(const stack_t *); 72extern int stack_inbounds(void *); 73extern int stack_violation(int, const siginfo_t *, const ucontext_t *); 74 75extern void *_stack_grow(void *); 76#endif 77#else 78 79extern int getcontext(); 80#pragma unknown_control_flow(getcontext) 81extern int setcontext(); 82extern int swapcontext(); 83extern void makecontext(); 84#if !defined(_XPG4_2) || defined(__EXTENSIONS__) 85extern int walkcontext(); 86extern int printstack(); 87extern int addrtosymstr(); 88extern int getustack(); 89extern int setustack(); 90 91extern int stack_getbounds(); 92extern int stack_setbounds(); 93extern int stack_inbounds(); 94extern int stack_violation(); 95 96extern void *_stack_grow(); 97#endif 98#endif 99 100#ifdef __cplusplus 101} 102#endif 103 104#endif /* _UCONTEXT_H */ 105