]> granicus.if.org Git - postgresql/blob - src/include/port/win32.h
Add Win32 shmem/sema prototypes.
[postgresql] / src / include / port / win32.h
1 /* $Header: /cvsroot/pgsql/src/include/port/win32.h,v 1.8 2003/04/24 21:23:01 momjian Exp $ */
2
3 #include <port/win32defs.h>
4
5 #define USES_WINSOCK
6 #define NOFILE            100
7
8 /* defines for dynamic linking on Win32 platform */
9 #ifdef __CYGWIN__
10
11 #if __GNUC__ && ! defined (__declspec)
12 #error You need egcs 1.1 or newer for compiling!
13 #endif
14
15 #ifdef BUILDING_DLL
16 #define DLLIMPORT __declspec (dllexport)
17 #else                                                   /* not BUILDING_DLL */
18 #define DLLIMPORT __declspec (dllimport)
19 #endif
20
21 #elif defined(WIN32) && defined(_MSC_VER)               /* not CYGWIN */
22
23 #if defined(_DLL)
24 #define DLLIMPORT __declspec (dllexport)
25 #else                                                   /* not _DLL */
26 #define DLLIMPORT __declspec (dllimport)
27 #endif
28
29 #else                                                   /* not CYGWIN, not MSVC */
30
31 #define DLLIMPORT
32
33 #endif
34
35 /*
36  *      IPC defines
37  */
38 #define IPC_RMID 256
39 #define IPC_CREAT 512
40 #define IPC_EXCL 1024
41 #define IPC_PRIVATE 234564
42 #define IPC_NOWAIT      2048
43 #define IPC_STAT 4096
44
45
46 /*
47  *      Shared memory
48  */
49 struct shmid_ds
50 {
51         int             dummy;
52         int             shm_nattch;
53 };
54
55 int   shmdt(const void *shmaddr);
56 void* shmat(int memId, void* shmaddr, int flag);
57 int   shmctl(int shmid, int flag, struct shmid_ds * dummy);
58 int   shmget(int memKey, int size, int flag);
59
60
61 /*
62  *      Semaphores
63  */
64 union semun
65 {
66         int             val;
67         struct semid_ds *buf;
68         unsigned short *array;
69 };
70
71 struct sembuf
72 {
73         int             sem_flg;
74         int             sem_op;
75         int             sem_num;
76 };
77
78 int       semctl(int semId, int semNum, int flag, union semun);
79 int       semget(int semKey, int semNum, int flags);
80 int       semop(int semId, struct sembuf * sops, int flag);
81
82
83 /* FROM SRA */
84
85 /*
86  * Supplement to <sys/types.h>.
87  */
88 #define uid_t int
89 #define gid_t int
90 #define pid_t unsigned long
91 #define ssize_t int
92 #define mode_t int
93 #define key_t long
94 #define ushort unsigned short
95
96 /*
97  * Supplement to <sys/stat.h>.
98  */
99 #define lstat slat
100
101 #define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
102 #define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
103
104 #define S_IRUSR _S_IREAD
105 #define S_IWUSR _S_IWRITE
106 #define S_IXUSR _S_IEXEC
107 #define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
108
109 /*
110  * Supplement to <errno.h>.
111  */
112 #include <errno.h>
113 #undef EAGAIN
114 #undef EINTR
115 #define EINTR WSAEINTR
116 #define EAGAIN WSAEWOULDBLOCK
117 #define EMSGSIZE WSAEMSGSIZE
118 #define EAFNOSUPPORT WSAEAFNOSUPPORT
119 #define EWOULDBLOCK WSAEWOULDBLOCK
120 #define ECONNRESET WSAECONNRESET
121 #define EINPROGRESS WSAEINPROGRESS
122
123 /*
124  * Supplement to <math.h>.
125  */
126 #define isnan _isnan
127 #define finite _finite
128 extern double rint(double x);
129
130 /*
131  * Supplement to <stdio.h>.
132  */
133 #define snprintf _snprintf
134 #define vsnprintf _vsnprintf
135
136