ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/libpeak-0.1.2/peak/semaphore.h
Revision: 3251
Committed: Wed Apr 2 16:58:30 2014 UTC (11 years, 4 months ago) by michael
Content type: text/x-chdr
File size: 3078 byte(s)
Log Message:
- Imported libpeak-0.1.2

File Contents

# Content
1 /* PEAK Library
2 *
3 * Copyright (c) 2003
4 * Stephane Thiell <mbuna@bugged.org>. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * $Id: semaphore.h,v 1.4 2004/01/12 01:52:11 mbuna Exp $
30 */
31 #ifndef INCLUDED_PEAK_SEMAPHORE_H_
32 #define INCLUDED_PEAK_SEMAPHORE_H_
33
34 /* This enables struct timespec on AIX and Linux.
35 */
36 #undef _POSIX_SOURCE
37 #define _POSIX_SOURCE 1
38 #undef _POSIX_C_SOURCE
39 #define _POSIX_C_SOURCE 199506L
40 #undef _XOPEN_SOURCE
41 #define _XOPEN_SOURCE 500
42
43 #ifdef HAVE_CONFIG_H
44 #include "config.h"
45 #endif
46 #ifdef HAVE_MACH_SEMAPHORE_H
47 #include <mach/semaphore.h>
48 #endif
49 #ifdef TIME_WITH_SYS_TIME
50 #include <sys/time.h>
51 #endif
52 #include <time.h>
53
54 #if defined(HAVE_SEMAPHORE_CREATE) && defined(HAVE_SEMAPHORE_SIGNAL)
55 #define PEAK_USE_MACH_SEMAPHORE
56 #endif
57
58 #ifdef PEAK_USE_MACH_SEMAPHORE
59 typedef mach_timespec_t peak_timespec_t;
60 #else
61 typedef struct timespec peak_timespec_t;
62 #endif
63
64 typedef struct __peak_semaphore * peak_semaphore;
65
66 #if defined(__cplusplus)
67 extern "C" {
68 #endif
69
70 extern peak_semaphore peak_semaphore_create(int value);
71
72 extern int peak_semaphore_signal(peak_semaphore semaphore);
73 extern int peak_semaphore_signal_all(peak_semaphore semaphore);
74 extern int peak_semaphore_wait(peak_semaphore semaphore);
75 extern int peak_semaphore_timedwait(peak_semaphore semaphore,
76 peak_timespec_t wait_time);
77 extern int peak_semaphore_wait_signal(peak_semaphore wait_semaphore,
78 peak_semaphore signal_semaphore);
79 extern int peak_semaphore_timedwait_signal(peak_semaphore wait_semaphore,
80 peak_semaphore signal_semaphore,
81 peak_timespec_t wait_time);
82
83 #if defined(__cplusplus)
84 }
85 #endif
86
87 #endif /* INCLUDED_PEAK_SEMAPHORE_H_ */