1 /* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.35 2004/10/05 13:48:35 momjian Exp $ */
3 /* undefine and redefine after #include */
12 /* Must be here to avoid conflicting with prototype in windows.h */
13 #define mkdir(a,b) mkdir(a)
16 #define fsync(a) _commit(a)
17 #define ftruncate(a,b) chsize(a,b)
21 /* defines for dynamic linking on Win32 platform */
22 #if defined(__MINGW32__) || defined(__CYGWIN__)
24 #if __GNUC__ && ! defined (__declspec)
25 #error You need egcs 1.1 or newer for compiling!
29 #define DLLIMPORT __declspec (dllexport)
30 #else /* not BUILDING_DLL */
31 #define DLLIMPORT __declspec (dllimport)
34 #elif defined(WIN32_CLIENT_ONLY)
37 #define DLLIMPORT __declspec (dllexport)
39 #define DLLIMPORT __declspec (dllimport)
42 #else /* not CYGWIN, not MSVC, not MingW */
50 #undef HAVE_UNION_SEMUN
51 #define HAVE_UNION_SEMUN 1
56 #define IPC_PRIVATE 234564
57 #define IPC_NOWAIT 2048
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);
91 unsigned short *array;
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);
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);
112 #define sigmask(sig) ( 1 << (sig-1) )
114 /* Signal function return values */
118 #define SIG_DFL ((pqsigfunc)0)
119 #define SIG_ERR ((pqsigfunc)-1)
120 #define SIG_IGN ((pqsigfunc)1)
123 #define pg_usleep(t) pgwin32_backend_usleep(t)
124 void pgwin32_backend_usleep(long microsec);
127 /* In backend/port/win32/socket.c */
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)
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);
143 const char *pgwin32_socket_strerror(int err);
145 /* in backend/port/win32/security.c */
146 extern int pgwin32_is_admin(void);
147 extern int pgwin32_is_service(void);
150 /* in backend/port/win32/error.c */
151 void _dosmaperr(unsigned long);
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)
159 /* Some extra signals */
163 #define SIGABRT 22 /* Set to match W32 value -- not UNIX
173 #define SIGTTOU 22 /* Same as SIGABRT -- no problem, I hope */
180 int tz_minuteswest; /* Minutes west of GMT. */
181 int tz_dsttime; /* Nonzero if DST is ever in effect. */
184 /* for setitimer in backend/port/win32/timer.c */
185 #define ITIMER_REAL 0
188 struct timeval it_interval;
189 struct timeval it_value;
191 int setitimer(int which, const struct itimerval * value, struct itimerval * ovalue);
195 * Supplement to <sys/types.h>.
202 * Supplement to <sys/stat.h>.
204 #define lstat(path, sb) stat((path), (sb))
207 * Supplement to <errno.h>.
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