source: win32/libpthreads-w32-2.8.0/include/semaphore.h @ 273

Last change on this file since 273 was 191, checked in by tim, 15 years ago

updated scons build scripts to handle MinGW
added binaries for MinGW build dependencies

File size: 4.2 KB
Line 
1/*
2 * Module: semaphore.h
3 *
4 * Purpose:
5 *      Semaphores aren't actually part of the PThreads standard.
6 *      They are defined by the POSIX Standard:
7 *
8 *              POSIX 1003.1b-1993      (POSIX.1b)
9 *
10 * --------------------------------------------------------------------------
11 *
12 *      Pthreads-win32 - POSIX Threads Library for Win32
13 *      Copyright(C) 1998 John E. Bossom
14 *      Copyright(C) 1999,2005 Pthreads-win32 contributors
15 *
16 *      Contact Email: rpj@callisto.canberra.edu.au
17 *
18 *      The current list of contributors is contained
19 *      in the file CONTRIBUTORS included with the source
20 *      code distribution. The list can also be seen at the
21 *      following World Wide Web location:
22 *      http://sources.redhat.com/pthreads-win32/contributors.html
23 *
24 *      This library is free software; you can redistribute it and/or
25 *      modify it under the terms of the GNU Lesser General Public
26 *      License as published by the Free Software Foundation; either
27 *      version 2 of the License, or (at your option) any later version.
28 *
29 *      This library is distributed in the hope that it will be useful,
30 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
31 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
32 *      Lesser General Public License for more details.
33 *
34 *      You should have received a copy of the GNU Lesser General Public
35 *      License along with this library in the file COPYING.LIB;
36 *      if not, write to the Free Software Foundation, Inc.,
37 *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
38 */
39#if !defined( SEMAPHORE_H )
40#define SEMAPHORE_H
41
42#undef PTW32_LEVEL
43
44#if defined(_POSIX_SOURCE)
45#define PTW32_LEVEL 0
46/* Early POSIX */
47#endif
48
49#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
50#undef PTW32_LEVEL
51#define PTW32_LEVEL 1
52/* Include 1b, 1c and 1d */
53#endif
54
55#if defined(INCLUDE_NP)
56#undef PTW32_LEVEL
57#define PTW32_LEVEL 2
58/* Include Non-Portable extensions */
59#endif
60
61#define PTW32_LEVEL_MAX 3
62
63#if !defined(PTW32_LEVEL)
64#define PTW32_LEVEL PTW32_LEVEL_MAX
65/* Include everything */
66#endif
67
68#if __GNUC__ && ! defined (__declspec)
69# error Please upgrade your GNU compiler to one that supports __declspec.
70#endif
71
72/*
73 * When building the DLL code, you should define PTW32_BUILD so that
74 * the variables/functions are exported correctly. When using the DLL,
75 * do NOT define PTW32_BUILD, and then the variables/functions will
76 * be imported correctly.
77 */
78#ifndef PTW32_STATIC_LIB
79#  ifdef PTW32_BUILD
80#    define PTW32_DLLPORT __declspec (dllexport)
81#  else
82#    define PTW32_DLLPORT __declspec (dllimport)
83#  endif
84#else
85#  define PTW32_DLLPORT
86#endif
87
88/*
89 * This is a duplicate of what is in the autoconf config.h,
90 * which is only used when building the pthread-win32 libraries.
91 */
92
93#ifndef PTW32_CONFIG_H
94#  if defined(WINCE)
95#    define NEED_ERRNO
96#    define NEED_SEM
97#  endif
98#  if defined(_UWIN) || defined(__MINGW32__)
99#    define HAVE_MODE_T
100#  endif
101#endif
102
103/*
104 *
105 */
106
107#if PTW32_LEVEL >= PTW32_LEVEL_MAX
108#ifdef NEED_ERRNO
109#include "need_errno.h"
110#else
111#include <errno.h>
112#endif
113#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
114
115#define _POSIX_SEMAPHORES
116
117#ifdef __cplusplus
118extern "C"
119{
120#endif                          /* __cplusplus */
121
122#ifndef HAVE_MODE_T
123typedef unsigned int mode_t;
124#endif
125
126
127typedef struct sem_t_ * sem_t;
128
129PTW32_DLLPORT int __cdecl sem_init (sem_t * sem,
130                            int pshared,
131                            unsigned int value);
132
133PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem);
134
135PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem);
136
137PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem);
138
139PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem,
140                                 const struct timespec * abstime);
141
142PTW32_DLLPORT int __cdecl sem_post (sem_t * sem);
143
144PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem,
145                                     int count);
146
147PTW32_DLLPORT int __cdecl sem_open (const char * name,
148                            int oflag,
149                            mode_t mode,
150                            unsigned int value);
151
152PTW32_DLLPORT int __cdecl sem_close (sem_t * sem);
153
154PTW32_DLLPORT int __cdecl sem_unlink (const char * name);
155
156PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem,
157                                int * sval);
158
159#ifdef __cplusplus
160}                               /* End of extern "C" */
161#endif                          /* __cplusplus */
162
163#undef PTW32_LEVEL
164#undef PTW32_LEVEL_MAX
165
166#endif                          /* !SEMAPHORE_H */
Note: See TracBrowser for help on using the repository browser.