]> granicus.if.org Git - postgresql/blob - src/include/port/win32.h
Remove unused Win32 defines, convert them to typdefs, per suggestion
[postgresql] / src / include / port / win32.h
1 /* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.35 2004/10/05 13:48:35 momjian Exp $ */
2
3 /* undefine and redefine after #include */
4 #undef mkdir
5
6 #undef ERROR
7 #include <windows.h>
8 #include <winsock.h>
9 #include <process.h>
10 #undef near
11
12 /* Must be here to avoid conflicting with prototype in windows.h */
13 #define mkdir(a,b)      mkdir(a)
14
15
16 #define fsync(a)        _commit(a)
17 #define ftruncate(a,b)  chsize(a,b)
18
19 #define USES_WINSOCK
20
21 /* defines for dynamic linking on Win32 platform */
22 #if defined(__MINGW32__) || defined(__CYGWIN__)
23
24 #if __GNUC__ && ! defined (__declspec)
25 #error You need egcs 1.1 or newer for compiling!
26 #endif
27
28 #ifdef BUILDING_DLL
29 #define DLLIMPORT __declspec (dllexport)
30 #else                                                   /* not BUILDING_DLL */
31 #define DLLIMPORT __declspec (dllimport)
32 #endif
33
34 #elif defined(WIN32_CLIENT_ONLY)
35
36 #if defined(_DLL)
37 #define DLLIMPORT __declspec (dllexport)
38 #else                                                   /* not _DLL */
39 #define DLLIMPORT __declspec (dllimport)
40 #endif
41
42 #else                                                   /* not CYGWIN, not MSVC, not MingW */
43
44 #define DLLIMPORT
45 #endif
46
47 /*
48  *      IPC defines
49  */
50 #undef HAVE_UNION_SEMUN
51 #define HAVE_UNION_SEMUN 1
52
53 #define IPC_RMID 256
54 #define IPC_CREAT 512
55 #define IPC_EXCL 1024
56 #define IPC_PRIVATE 234564
57 #define IPC_NOWAIT      2048
58 #define IPC_STAT 4096
59
60 #define EACCESS 2048
61 #define EIDRM 4096
62
63 #define SETALL 8192
64 #define GETNCNT 16384
65 #define GETVAL 65536
66 #define SETVAL 131072
67 #define GETPID 262144
68
69 /*
70  *      Shared memory
71  */
72 struct shmid_ds
73 {
74         int                     dummy;
75         int                     shm_nattch;
76 };
77
78 int                     shmdt(const void *shmaddr);
79 void       *shmat(int memId, void *shmaddr, int flag);
80 int                     shmctl(int shmid, int flag, struct shmid_ds * dummy);
81 int                     shmget(int memKey, int size, int flag);
82
83
84 /*
85  *      Semaphores
86  */
87 union semun
88 {
89         int                     val;
90         struct semid_ds *buf;
91         unsigned short *array;
92 };
93
94 struct sembuf
95 {
96         int                     sem_flg;
97         int                     sem_op;
98         int                     sem_num;
99 };
100
101 int                     semctl(int semId, int semNum, int flag, union semun);
102 int                     semget(int semKey, int semNum, int flags);
103 int                     semop(int semId, struct sembuf * sops, int flag);
104
105
106 /* In backend/port/win32/signal.c */
107 void            pgwin32_signal_initialize(void);
108 extern DLLIMPORT HANDLE pgwin32_signal_event;
109 void            pgwin32_dispatch_queued_signals(void);
110 void            pg_queue_signal(int signum);
111
112 #define sigmask(sig) ( 1 << (sig-1) )
113
114 /* Signal function return values */
115 #undef SIG_DFL
116 #undef SIG_ERR
117 #undef SIG_IGN
118 #define SIG_DFL ((pqsigfunc)0)
119 #define SIG_ERR ((pqsigfunc)-1)
120 #define SIG_IGN ((pqsigfunc)1)
121
122 #ifndef FRONTEND
123 #define pg_usleep(t) pgwin32_backend_usleep(t)
124 void            pgwin32_backend_usleep(long microsec);
125 #endif
126
127 /* In backend/port/win32/socket.c */
128 #ifndef FRONTEND
129 #define socket(af, type, protocol) pgwin32_socket(af, type, protocol)
130 #define accept(s, addr, addrlen) pgwin32_accept(s, addr, addrlen)
131 #define connect(s, name, namelen) pgwin32_connect(s, name, namelen)
132 #define select(n, r, w, e, timeout) pgwin32_select(n, r, w, e, timeout)
133 #define recv(s, buf, len, flags) pgwin32_recv(s, buf, len, flags)
134 #define send(s, buf, len, flags) pgwin32_send(s, buf, len, flags)
135
136 SOCKET          pgwin32_socket(int af, int type, int protocol);
137 SOCKET          pgwin32_accept(SOCKET s, struct sockaddr * addr, int *addrlen);
138 int                     pgwin32_connect(SOCKET s, const struct sockaddr * name, int namelen);
139 int                     pgwin32_select(int nfds, fd_set *readfs, fd_set *writefds, fd_set *exceptfds, const struct timeval * timeout);
140 int                     pgwin32_recv(SOCKET s, char *buf, int len, int flags);
141 int                     pgwin32_send(SOCKET s, char *buf, int len, int flags);
142
143 const char *pgwin32_socket_strerror(int err);
144
145 /* in backend/port/win32/security.c */
146 extern int      pgwin32_is_admin(void);
147 extern int      pgwin32_is_service(void);
148 #endif
149
150 /* in backend/port/win32/error.c */
151 void            _dosmaperr(unsigned long);
152
153
154 #define WEXITSTATUS(w)  (((w) >> 8) & 0xff)
155 #define WIFEXITED(w)    (((w) & 0xff) == 0)
156 #define WIFSIGNALED(w)  (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f))
157 #define WTERMSIG(w)             ((w) & 0x7f)
158
159 /* Some extra signals */
160 #define SIGHUP                          1
161 #define SIGQUIT                         3
162 #define SIGTRAP                         5
163 #define SIGABRT                         22      /* Set to match W32 value -- not UNIX
164                                                                  * value */
165 #define SIGKILL                         9
166 #define SIGPIPE                         13
167 #define SIGALRM                         14
168 #define SIGSTOP                         17
169 #define SIGTSTP                         18
170 #define SIGCONT                         19
171 #define SIGCHLD                         20
172 #define SIGTTIN                         21
173 #define SIGTTOU                         22      /* Same as SIGABRT -- no problem, I hope */
174 #define SIGWINCH                        28
175 #define SIGUSR1                         30
176 #define SIGUSR2                         31
177
178 struct timezone
179 {
180         int                     tz_minuteswest; /* Minutes west of GMT.  */
181         int                     tz_dsttime;             /* Nonzero if DST is ever in effect.  */
182 };
183
184 /* for setitimer in backend/port/win32/timer.c */
185 #define ITIMER_REAL 0
186 struct itimerval
187 {
188         struct timeval it_interval;
189         struct timeval it_value;
190 };
191 int                     setitimer(int which, const struct itimerval * value, struct itimerval * ovalue);
192
193
194 /*
195  * Supplement to <sys/types.h>.
196  */
197 typedef int uid_t;
198 typedef int gid_t;
199 typdef long key_t;
200
201 /*
202  * Supplement to <sys/stat.h>.
203  */
204 #define lstat(path, sb) stat((path), (sb))
205
206 /*
207  * Supplement to <errno.h>.
208  */
209 #include <errno.h>
210 #undef EAGAIN
211 #undef EINTR
212 #define EINTR WSAEINTR
213 #define EAGAIN WSAEWOULDBLOCK
214 #define EMSGSIZE WSAEMSGSIZE
215 #define EAFNOSUPPORT WSAEAFNOSUPPORT
216 #define EWOULDBLOCK WSAEWOULDBLOCK
217 #define ECONNRESET WSAECONNRESET
218 #define EINPROGRESS WSAEINPROGRESS
219 #define ENOBUFS WSAENOBUFS
220 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
221 #define ECONNREFUSED WSAECONNREFUSED
222 #define EBADFD WSAENOTSOCK
223 #define EOPNOTSUPP WSAEOPNOTSUPP