These are the windows fixes that I previously alluded to, combined with
[dyninst.git] / dyninstAPI / src / pdwinnt.h
1 /*
2  * Copyright (c) 1996-2004 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  * This license is for research uses.  For such uses, there is no
12  * charge. We define "research use" to mean you may freely use it
13  * inside your organization for whatever purposes you see fit. But you
14  * may not re-distribute Paradyn or parts of Paradyn, in any form
15  * source or binary (including derivatives), electronic or otherwise,
16  * to any other organization or entity without our permission.
17  * 
18  * (for other uses, please contact us at paradyn@cs.wisc.edu)
19  * 
20  * All warranties, including without limitation, any warranty of
21  * merchantability or fitness for a particular purpose, are hereby
22  * excluded.
23  * 
24  * By your use of Paradyn, you understand and agree that we (or any
25  * other person or entity with proprietary rights in Paradyn) are
26  * under no obligation to provide either maintenance services,
27  * update services, notices of latent defects, or correction of
28  * defects for Paradyn.
29  * 
30  * Even if advised of the possibility of such damages, under no
31  * circumstances shall we (or any other person or entity with
32  * proprietary rights in the software licensed hereunder) be liable
33  * to you or any third party for direct, indirect, or consequential
34  * damages of any character regardless of type of action, including,
35  * without limitation, loss of profits, loss of use, loss of good
36  * will, or computer failure or malfunction.  You agree to indemnify
37  * us (and any other person or entity with proprietary rights in the
38  * software licensed hereunder) for any and all liability it may
39  * incur to third parties resulting from your use of Paradyn.
40  */
41
42 // $Id: pdwinnt.h,v 1.21 2008/05/09 00:25:38 jaw Exp $
43
44 #if !defined(PDWINNT_H)
45 #define PDWINNT_H
46
47 #if !defined(i386_unknown_nt4_0) && !(defined mips_unknown_ce2_11) //ccw 20 july 2000 : 29 mar 2001
48 #error "invalid architecture-os inclusion"
49 #endif
50
51 #ifndef PDWINNT_HDR
52 #define PDWINNT_HDR
53 #include "common/h/headers.h"
54 #include "dyninstAPI/src/w32CONTEXT.h" //ccw 30 mar 2001
55
56 typedef HANDLE handleT;
57
58 struct dyn_saved_regs {
59     w32CONTEXT cont;
60 };
61
62 struct EXCEPTION_REGISTRATION {
63     EXCEPTION_REGISTRATION *prev;
64     Address handler;
65 };
66
67 #define EXIT_NAME "_exit"
68 #define SIGNAL_HANDLER "no_signal_handler"
69 #endif
70
71 // Number of bytes to save in an overwrite operation
72 #define BYTES_TO_SAVE 256
73
74 #define CAN_DUMP_CORE false
75 #define SLEEP_ON_MUTATEE_CRASH 0 /*seconds*/
76 #define sleep Sleep
77
78 #define INFO_TO_EXIT_CODE(info) info.u.ExitProcess.dwExitCode
79 #define INFO_TO_ADDRESS(info) info.u.Exception.ExceptionRecord.ExceptionAddress
80 #define INFO_TO_PID(info) -1
81
82 typedef DEBUG_EVENT eventInfo_t;
83 typedef DWORD eventWhat_t;
84 typedef void * eventMoreInfo_t;
85 #define THREAD_RETURN void
86 #define DO_THREAD_RETURN return
87
88 typedef void (*thread_main_t)(void *);
89 typedef unsigned long internal_thread_t;
90
91 #define VSNPRINTF _vsnprintf
92 #define SNPRINTF _snprinf
93
94 #define INDEPENDENT_LWP_CONTROL true
95
96 typedef CRITICAL_SECTION EventLock_t;
97 typedef HANDLE EventCond_t;
98
99 #define ssize_t int
100 #define DYNINST_ASYNC_PORT 28003
101 #define PDSOCKET_ERRNO WSAGetLastError()
102 #define INVALID_PDSOCKET (INVALID_SOCKET)
103 #define SOCKET_TYPE PF_INET
104 #define THREAD_RETURN void
105 #define DO_THREAD_RETURN return
106 #define SOCKLEN_T unsigned int
107
108
109 /* We don't compile with gcc on Windows.  *sigh*  This will be slower,
110    but should be functionally identical. */
111 #include <set>
112 #include <vector>
113
114 #endif /* PDWINNT_H */