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