win32.h 3.66 KB
Newer Older
1
/* $PostgreSQL: pgsql/src/include/port/win32.h,v 1.18 2004/02/18 16:25:12 momjian Exp $ */
2 3 4 5 6 7

/* undefine and redefine after #include */
#undef mkdir

#undef ERROR
#include <windows.h>
8
#include <winsock.h>
9 10 11 12 13
#undef near

/* Must be here to avoid conflicting with prototype in windows.h */
#define mkdir(a,b)	mkdir(a)

14

15 16
#define USES_WINSOCK
#define NOFILE		  100
17 18

/* defines for dynamic linking on Win32 platform */
19
#if defined(__CYGWIN__) || defined(__MINGW32__)
20 21 22 23 24 25 26 27 28 29 30

#if __GNUC__ && ! defined (__declspec)
#error You need egcs 1.1 or newer for compiling!
#endif

#ifdef BUILDING_DLL
#define DLLIMPORT __declspec (dllexport)
#else							/* not BUILDING_DLL */
#define DLLIMPORT __declspec (dllimport)
#endif

31
#elif defined(WIN32) && defined(_MSC_VER)		/* not CYGWIN or MingW */
32 33 34 35 36 37 38

#if defined(_DLL)
#define DLLIMPORT __declspec (dllexport)
#else							/* not _DLL */
#define DLLIMPORT __declspec (dllimport)
#endif

39
#else							/* not CYGWIN, not MSVC, not MingW */
40 41 42

#define DLLIMPORT
#endif
43

44 45 46
/*
 *	IPC defines
 */
47 48 49
#undef HAVE_UNION_SEMUN
#define HAVE_UNION_SEMUN 1

50 51 52 53 54 55 56
#define IPC_RMID 256
#define IPC_CREAT 512
#define IPC_EXCL 1024
#define IPC_PRIVATE 234564
#define IPC_NOWAIT	2048
#define IPC_STAT 4096

57 58 59 60 61 62 63 64
#define EACCESS 2048
#define EIDRM 4096

#define SETALL 8192
#define GETNCNT 16384
#define GETVAL 65536
#define SETVAL 131072
#define GETPID 262144
65 66 67 68 69 70

/*
 *	Shared memory
 */
struct shmid_ds
{
Bruce Momjian's avatar
Bruce Momjian committed
71 72
	int			dummy;
	int			shm_nattch;
73 74
};

Bruce Momjian's avatar
Bruce Momjian committed
75 76 77 78
int			shmdt(const void *shmaddr);
void	   *shmat(int memId, void *shmaddr, int flag);
int			shmctl(int shmid, int flag, struct shmid_ds * dummy);
int			shmget(int memKey, int size, int flag);
79 80 81 82 83 84 85


/*
 *	Semaphores
 */
union semun
{
Bruce Momjian's avatar
Bruce Momjian committed
86
	int			val;
87 88 89 90 91 92
	struct semid_ds *buf;
	unsigned short *array;
};

struct sembuf
{
Bruce Momjian's avatar
Bruce Momjian committed
93 94 95
	int			sem_flg;
	int			sem_op;
	int			sem_num;
96 97
};

Bruce Momjian's avatar
Bruce Momjian committed
98 99 100
int			semctl(int semId, int semNum, int flag, union semun);
int			semget(int semKey, int semNum, int flags);
int			semop(int semId, struct sembuf * sops, int flag);
101

102 103
#define sleep(sec)	(Sleep(sec * 1000), /* no return value */ 0)

104 105 106 107 108 109 110

#ifndef FRONTEND
/* In libpq/pqsignal.c */
#define kill(pid,sig)   pqkill(pid,sig)
int pqkill(int pid, int sig);
#endif

111 112
/* Some extra signals */
#define SIGHUP				1
Bruce Momjian's avatar
Bruce Momjian committed
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
#define SIGQUIT				3
#define SIGTRAP				5
#define SIGABRT				22	/* Set to match W32 value -- not UNIX
								 * value */
#define SIGKILL				9
#define SIGPIPE				13
#define SIGALRM				14
#define SIGSTOP				17
#define SIGCONT				19
#define SIGCHLD				20
#define SIGTTIN				21
#define SIGTTOU				22	/* Same as SIGABRT -- no problem, I hope */
#define SIGWINCH			28
#define SIGUSR1				30
#define SIGUSR2				31
128 129 130

struct timezone
{
Bruce Momjian's avatar
Bruce Momjian committed
131 132
	int			tz_minuteswest; /* Minutes west of GMT.  */
	int			tz_dsttime;		/* Nonzero if DST is ever in effect.  */
133
};
134

135 136 137 138 139 140 141 142 143
/* for setitimer in backend/port/win32/timer.c */
#define ITIMER_REAL 0
struct itimerval {
	struct timeval it_interval;
	struct timeval it_value;
};
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);


144 145
/* FROM SRA */

146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
/*
 * Supplement to <sys/types.h>.
 */
#define uid_t int
#define gid_t int
#define pid_t unsigned long
#define ssize_t int
#define mode_t int
#define key_t long
#define ushort unsigned short

/*
 * Supplement to <sys/stat.h>.
 */
#define lstat slat

#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)

#define S_IRUSR _S_IREAD
#define S_IWUSR _S_IWRITE
#define S_IXUSR _S_IEXEC
#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)

/*
 * Supplement to <errno.h>.
 */
#include <errno.h>
#undef EAGAIN
#undef EINTR
#define EINTR WSAEINTR
#define EAGAIN WSAEWOULDBLOCK
#define EMSGSIZE WSAEMSGSIZE
#define EAFNOSUPPORT WSAEAFNOSUPPORT
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ECONNRESET WSAECONNRESET
#define EINPROGRESS WSAEINPROGRESS