Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / src / sol_proc.h
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31
32 // $Id: sol_proc.h,v 1.6 2006/05/10 02:31:02 jaw Exp $
33
34
35 #ifndef _SOL_PROC_H_
36 #define _SOL_PROC_H_
37
38 #define INDEPENDENT_LWP_CONTROL false
39
40 /*
41  * COMPATIBILITY SECTION
42  * 
43  * Even though aix and solaris are almost entirely the same, there are differences.
44  * This section defines macros to deal with this
45  */
46
47 #if defined(os_solaris) && defined(arch_sparc)
48 #define GETREG_nPC(regs)      (regs[R_nPC])
49 #define GETREG_PC(regs)       (regs[R_PC])
50 #define GETREG_FP(regs)       (regs[R_O6])
51 #define GETREG_INFO(regs)     (regs[R_O0])
52 #define GETREG_GPR(regs, reg) (regs[reg])
53 // Solaris uses the same operators on all set datatypes
54 #define prfillsysset(x)       prfillset(x)
55 #define premptysysset(x)      premptyset(x)
56 #define praddsysset(x,y)      praddset(x,y)
57 #define prdelsysset(x,y)      prdelset(x,y)
58 #define prissyssetmember(x,y) prismember(x,y)
59 #define proc_sigset_t         sigset_t
60 #define SYSSET_DECLAREPID(x,y) {}
61 #define SYSSET_ALLOC(x)     ((sysset_t *)malloc(sizeof(sysset_t)))
62 #define SYSSET_FREE(x)      (free(x))
63 #define SYSSET_SIZE(x)      (sizeof(sysset_t))
64 #elif defined(os_solaris) && defined(arch_x86)
65 #define REG_PC(regs) (regs->theIntRegs[EIP])
66 #define REG_FP(regs) (regs->theIntRegs[EBP])
67 #define REG_SP(regs) (regs->theIntRegs[UESP])
68 #elif defined(os_aix)
69 #define GETREG_nPC(regs)       (regs.__iar)
70 #define GETREG_PC(regs)        (regs.__iar)
71 #define GETREG_FP(regs)        (regs.__gpr[1])
72 #define GETREG_INFO(regs)      (regs.__gpr[3])
73 #define GETREG_GPR(regs,reg)   (regs.__gpr[reg])
74 #define PR_BPTADJ           0 // Not defined on AIX
75 #define PR_MSACCT           0 // Again, not defined
76 #define proc_sigset_t          pr_sigset_t
77 #define SYSSET_DECLAREPID(x,y) int x=y
78 extern unsigned int SYSSET_SIZE(sysset_t *);
79 extern sysset_t *SYSSET_ALLOC(int);
80 #define SYSSET_FREE(x)      (free(x))
81 #endif
82
83 #endif
84
85