comparison druntime/import/stdc/posix/semaphore.d @ 760:6f33b427bfd1

Seems like hg ignores .di files, so I missed a bunch of stuff. complete druntime should be there now :)
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 12 Nov 2008 00:19:18 +0100
parents
children
comparison
equal deleted inserted replaced
759:d3eb054172f9 760:6f33b427bfd1
1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Public Domain
5 * License: Public Domain
6 * Authors: Sean Kelly
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
9 module stdc.posix.semaphore;
10
11 private import stdc.posix.config;
12 private import stdc.posix.time;
13
14 extern (C):
15
16 //
17 // Required
18 //
19 /*
20 sem_t
21 SEM_FAILED
22
23 int sem_close(sem_t*);
24 int sem_destroy(sem_t*);
25 int sem_getvalue(sem_t*, int*);
26 int sem_init(sem_t*, int, uint);
27 sem_t* sem_open(in char*, int, ...);
28 int sem_post(sem_t*);
29 int sem_trywait(sem_t*);
30 int sem_unlink(in char*);
31 int sem_wait(sem_t*);
32 */
33
34 version( linux )
35 {
36 private alias int __atomic_lock_t;
37
38 private struct _pthread_fastlock
39 {
40 c_long __status;
41 __atomic_lock_t __spinlock;
42 }
43
44 struct sem_t
45 {
46 _pthread_fastlock __sem_lock;
47 int __sem_value;
48 void* __sem_waiting;
49 }
50
51 const SEM_FAILED = cast(sem_t*) null;
52 }
53 else version( darwin )
54 {
55 alias int sem_t;
56
57 const SEM_FAILED = cast(sem_t*) null;
58 }
59 else version( freebsd )
60 {
61 const uint SEM_MAGIC = 0x09fa4012;
62 const SEM_USER = 0;
63
64 alias void* sem_t;
65
66 const SEM_FAILED = cast(sem_t*) null;
67 }
68
69 int sem_close(sem_t*);
70 int sem_destroy(sem_t*);
71 int sem_getvalue(sem_t*, int*);
72 int sem_init(sem_t*, int, uint);
73 sem_t* sem_open(in char*, int, ...);
74 int sem_post(sem_t*);
75 int sem_trywait(sem_t*);
76 int sem_unlink(in char*);
77 int sem_wait(sem_t*);
78
79 //
80 // Timeouts (TMO)
81 //
82 /*
83 int sem_timedwait(sem_t*, in timespec*);
84 */
85
86 version( linux )
87 {
88 int sem_timedwait(sem_t*, in timespec*);
89 }
90 else version( darwin )
91 {
92 int sem_timedwait(sem_t*, in timespec*);
93 }
94 else version( freebsd )
95 {
96 int sem_timedwait(sem_t*, in timespec*);
97 }