comparison src/nt.h @ 408:501cfd01ee6d r21-2-34

Import from CVS: tag r21-2-34
author cvs
date Mon, 13 Aug 2007 11:18:11 +0200
parents b8cc9ab3f761
children de805c49cfc1
comparison
equal deleted inserted replaced
407:ed6218a7d4d3 408:501cfd01ee6d
38 #undef X_OK 38 #undef X_OK
39 #endif 39 #endif
40 #define X_OK 1 40 #define X_OK 1
41 #define F_OK 0 41 #define F_OK 0
42 42
43 /* File descriptor set emulation. */
44
45 #if 0 /* These are defined in winsock.h.
46 FD_SETSIZE is defined 64. Let's not full the runtime. */
47
48 /* The MSVC multithreaded statically-linked runtime library has limit
49 of 256 descriptors by default (the single-threaded static library
50 has a limit of 64 descriptors, and the DLL versions both have a
51 limit of 512). Beware. Should this be set to 512? */
52 #define FD_SETSIZE 256
53 typedef struct {
54 unsigned int bits[FD_SETSIZE / 32];
55 } fd_set;
56
57 /* standard access macros */
58 #define FD_SET(n, p) \
59 do { \
60 if ((n) < FD_SETSIZE) { \
61 (p)->bits[(n)/32] |= (1 << (n)%32); \
62 } \
63 } while (0)
64 #define FD_CLR(n, p) \
65 do { \
66 if ((n) < FD_SETSIZE) { \
67 (p)->bits[(n)/32] &= ~(1 << (n)%32); \
68 } \
69 } while (0)
70 #define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0)
71 #define FD_ZERO(p) memset((p), 0, sizeof(fd_set))
72
73 #define SELECT_TYPE fd_set
74 #define MAXDESC FD_SETSIZE
75
76 #endif /* 0 */
77
78 /* ------------------------------------------------------------------------- */ 43 /* ------------------------------------------------------------------------- */
79 44
80 /* child_process.status values */ 45 /* child_process.status values */
81 enum { 46 enum {
82 STATUS_READ_ERROR = -1, 47 STATUS_READ_ERROR = -1,
111 unsigned flags; 76 unsigned flags;
112 HANDLE hnd; 77 HANDLE hnd;
113 child_process * cp; 78 child_process * cp;
114 } filedesc; 79 } filedesc;
115 80
116 extern filedesc fd_info [ MAXDESC ]; 81 extern filedesc fd_info [];
117 82
118 /* fd_info flag definitions */ 83 /* fd_info flag definitions */
119 #define FILE_READ 0x0001 84 #define FILE_READ 0x0001
120 #define FILE_WRITE 0x0002 85 #define FILE_WRITE 0x0002
121 #define FILE_BINARY 0x0010 86 #define FILE_BINARY 0x0010
145 extern LPBYTE nt_get_resource (char * key, LPDWORD type); 110 extern LPBYTE nt_get_resource (char * key, LPDWORD type);
146 111
147 void set_process_dir (const char * dir); 112 void set_process_dir (const char * dir);
148 time_t convert_time (FILETIME ft); 113 time_t convert_time (FILETIME ft);
149 114
150 extern void init_ntproc (); 115 extern void init_ntproc (void);
151 extern void term_ntproc (int unused); 116 extern void term_ntproc (int unused);
152 117
118 /* ----------------------------------------------------------------- */
119 /* Useful routines for manipulating memory-mapped files. */
120
121 typedef struct file_data
122 {
123 const char *name;
124 unsigned long size;
125 HANDLE file;
126 HANDLE file_mapping;
127 char *file_base;
128 } file_data;
129
130 #define OFFSET_TO_RVA(var,section) \
131 (section->VirtualAddress + ((DWORD)(var) - section->PointerToRawData))
132
133 #define RVA_TO_OFFSET(var,section) \
134 (section->PointerToRawData + ((DWORD)(var) - section->VirtualAddress))
135
136 #define RVA_TO_PTR(var,section,filedata) \
137 ((void *)(RVA_TO_OFFSET(var,section) + (filedata).file_base))
138
139 int open_input_file (file_data *p_file, const char *name);
140 int open_output_file (file_data *p_file, const char *name, unsigned long size);
141 void close_file_data (file_data *p_file);
142 void mswindows_executable_type (const char * filename, int * is_dos_app,
143 int * is_cygnus_app);
144
145 /* In process-nt.c */
146 extern int compare_env (const void *strp1, const void *strp2);
147
153 #endif /* INCLUDED_nt_h_ */ 148 #endif /* INCLUDED_nt_h_ */