Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / src / unix.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: unix.h,v 1.6 2008/06/19 19:53:52 legendre Exp $
33  */
34
35 #ifndef _UNIX_H_
36 #define _UNIX_H_
37
38 #define CAN_DUMP_CORE true
39 #define SLEEP_ON_MUTATEE_CRASH 300 /*seconds*/
40
41 #define INFO_TO_EXIT_CODE(info) info
42 #define INFO_TO_PID(info) info
43 #define INFO_TO_ADDRESS(info) (Address) 0
44
45 // process exits do not cause poll events on alpha-osf, so we have a timeout
46 #if defined (os_osf)
47 #define POLL_TIMEOUT 1000 /*ms*/
48 #define POLL_FD get_fd()
49 #else
50 #define POLL_FD status_fd()
51 #define POLL_TIMEOUT -1
52 #endif
53
54 //  On /proc platforms we have predefined system call mappings (SYS_fork, etc).
55 //  Define them here for platforms which don't have them 
56
57 #if !defined(SYS_fork)
58 #define SYS_fork 1001
59 #endif
60 #if !defined(SYS_exec)
61 #define SYS_exec 1002
62 #endif
63 #if !defined(SYS_exit)
64 #define SYS_exit 1003
65 #endif
66 #if !defined(SYS_load)
67 #define SYS_load 1004
68 #endif
69 #if !defined(SYS_execve)
70 #define SYS_execve 1005
71 #endif
72 #if !defined(SYS_fork1)
73 #define SYS_fork1 1006
74 #endif
75 #if !defined(SYS_vfork)
76 #define SYS_vfork 1007
77 #endif
78 #if !defined(SYS_execv)
79 #define SYS_execv 1008
80 #endif
81 #if !defined(SYS_lwp_exit)
82 #define SYS_lwp_exit 1009
83 #endif
84
85 typedef int procWaitpidStatus_t;
86 class EventRecord;
87 bool decodeWaitPidStatus(procWaitpidStatus_t status, EventRecord &ev);
88
89 #if defined (os_aix) && defined(cap_proc)
90 extern int SYSSET_MAP(int, int);
91 #else
92 #define SYSSET_MAP(x, pid)  (x)
93 #endif
94
95 typedef unsigned long eventInfo_t;
96 typedef void * eventMoreInfo_t;
97 typedef int eventWhat_t;
98 #define THREAD_RETURN void *
99 #define DO_THREAD_RETURN return NULL
100
101 typedef void *(*thread_main_t)(void *);
102 typedef pthread_t internal_thread_t;
103
104 #define VSNPRINTF vsnprintf
105 #define SNPRINTF snprinf
106
107 typedef pthread_mutex_t EventLock_t;
108 typedef pthread_cond_t EventCond_t;
109
110 #if defined(os_linux) 
111 #define PTHREAD_MUTEX_TYPE PTHREAD_MUTEX_RECURSIVE_NP
112 #define STRERROR_BUFSIZE 512
113 #define ERROR_BUFFER char buf[STRERROR_BUFSIZE]
114 #define STRERROR(x,y) strerror_r(x,y,STRERROR_BUFSIZE)
115 #else
116 #define ERROR_BUFFER
117 #define PTHREAD_MUTEX_TYPE PTHREAD_MUTEX_RECURSIVE
118 #define STRERROR_BUFSIZE 0
119 #define STRERROR(x,y) strerror(x)
120 #endif
121
122 #include <sys/types.h>
123 #include <sys/socket.h>
124 #include <pthread.h>
125
126 #define PDSOCKET_ERRNO errno
127 #define INVALID_PDSOCKET (-1)
128 #define SOCKET_TYPE PF_UNIX
129 #define THREAD_RETURN void *
130 #define DO_THREAD_RETURN return NULL
131
132 #if defined(os_osf)
133 #define SOCKLEN_T size_t 
134 #else
135 #define SOCKLEN_T socklen_t 
136 #endif
137
138 #include "dynutil/h/dyntypes.h"
139
140 #ifndef INVALID_HANDLE_VALUE
141 #define INVALID_HANDLE_VALUE -1
142 #endif
143
144 #endif
145
146