comparison src/thread/pthread/SDL_syssem.c @ 1668:4da1ee79c9af SDL-1.3

more tweaking indent options
author Sam Lantinga <slouken@libsdl.org>
date Mon, 29 May 2006 04:04:35 +0000
parents 782fd950bd46
children
comparison
equal deleted inserted replaced
1667:1fddae038bc8 1668:4da1ee79c9af
39 sem_t sem; 39 sem_t sem;
40 }; 40 };
41 41
42 /* Create a semaphore, initialized with value */ 42 /* Create a semaphore, initialized with value */
43 SDL_sem * 43 SDL_sem *
44 SDL_CreateSemaphore (Uint32 initial_value) 44 SDL_CreateSemaphore(Uint32 initial_value)
45 { 45 {
46 SDL_sem *sem = (SDL_sem *) SDL_malloc (sizeof (SDL_sem)); 46 SDL_sem *sem = (SDL_sem *) SDL_malloc(sizeof(SDL_sem));
47 if (sem) { 47 if (sem) {
48 if (sem_init (&sem->sem, 0, initial_value) < 0) { 48 if (sem_init(&sem->sem, 0, initial_value) < 0) {
49 SDL_SetError ("sem_init() failed"); 49 SDL_SetError("sem_init() failed");
50 SDL_free (sem); 50 SDL_free(sem);
51 sem = NULL; 51 sem = NULL;
52 } 52 }
53 } else { 53 } else {
54 SDL_OutOfMemory (); 54 SDL_OutOfMemory();
55 } 55 }
56 return sem; 56 return sem;
57 } 57 }
58 58
59 void 59 void
60 SDL_DestroySemaphore (SDL_sem * sem) 60 SDL_DestroySemaphore(SDL_sem * sem)
61 { 61 {
62 if (sem) { 62 if (sem) {
63 sem_destroy (&sem->sem); 63 sem_destroy(&sem->sem);
64 SDL_free (sem); 64 SDL_free(sem);
65 } 65 }
66 } 66 }
67 67
68 int 68 int
69 SDL_SemTryWait (SDL_sem * sem) 69 SDL_SemTryWait(SDL_sem * sem)
70 { 70 {
71 int retval; 71 int retval;
72 72
73 if (!sem) { 73 if (!sem) {
74 SDL_SetError ("Passed a NULL semaphore"); 74 SDL_SetError("Passed a NULL semaphore");
75 return -1; 75 return -1;
76 } 76 }
77 retval = SDL_MUTEX_TIMEDOUT; 77 retval = SDL_MUTEX_TIMEDOUT;
78 if (sem_trywait (&sem->sem) == 0) { 78 if (sem_trywait(&sem->sem) == 0) {
79 retval = 0; 79 retval = 0;
80 } 80 }
81 return retval; 81 return retval;
82 } 82 }
83 83
84 int 84 int
85 SDL_SemWait (SDL_sem * sem) 85 SDL_SemWait(SDL_sem * sem)
86 { 86 {
87 int retval; 87 int retval;
88 88
89 if (!sem) { 89 if (!sem) {
90 SDL_SetError ("Passed a NULL semaphore"); 90 SDL_SetError("Passed a NULL semaphore");
91 return -1; 91 return -1;
92 } 92 }
93 93
94 retval = sem_wait (&sem->sem); 94 retval = sem_wait(&sem->sem);
95 if (retval < 0) { 95 if (retval < 0) {
96 SDL_SetError ("sem_wait() failed"); 96 SDL_SetError("sem_wait() failed");
97 } 97 }
98 return retval; 98 return retval;
99 } 99 }
100 100
101 int 101 int
102 SDL_SemWaitTimeout (SDL_sem * sem, Uint32 timeout) 102 SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
103 { 103 {
104 int retval; 104 int retval;
105 105
106 if (!sem) { 106 if (!sem) {
107 SDL_SetError ("Passed a NULL semaphore"); 107 SDL_SetError("Passed a NULL semaphore");
108 return -1; 108 return -1;
109 } 109 }
110 110
111 /* Try the easy cases first */ 111 /* Try the easy cases first */
112 if (timeout == 0) { 112 if (timeout == 0) {
113 return SDL_SemTryWait (sem); 113 return SDL_SemTryWait(sem);
114 } 114 }
115 if (timeout == SDL_MUTEX_MAXWAIT) { 115 if (timeout == SDL_MUTEX_MAXWAIT) {
116 return SDL_SemWait (sem); 116 return SDL_SemWait(sem);
117 } 117 }
118 118
119 /* Ack! We have to busy wait... */ 119 /* Ack! We have to busy wait... */
120 /* FIXME: Use sem_timedwait()? */ 120 /* FIXME: Use sem_timedwait()? */
121 timeout += SDL_GetTicks (); 121 timeout += SDL_GetTicks();
122 do { 122 do {
123 retval = SDL_SemTryWait (sem); 123 retval = SDL_SemTryWait(sem);
124 if (retval == 0) { 124 if (retval == 0) {
125 break; 125 break;
126 } 126 }
127 SDL_Delay (1); 127 SDL_Delay(1);
128 } 128 }
129 while (SDL_GetTicks () < timeout); 129 while (SDL_GetTicks() < timeout);
130 130
131 return retval; 131 return retval;
132 } 132 }
133 133
134 Uint32 134 Uint32
135 SDL_SemValue (SDL_sem * sem) 135 SDL_SemValue(SDL_sem * sem)
136 { 136 {
137 int ret = 0; 137 int ret = 0;
138 if (sem) { 138 if (sem) {
139 sem_getvalue (&sem->sem, &ret); 139 sem_getvalue(&sem->sem, &ret);
140 if (ret < 0) { 140 if (ret < 0) {
141 ret = 0; 141 ret = 0;
142 } 142 }
143 } 143 }
144 return (Uint32) ret; 144 return (Uint32) ret;
145 } 145 }
146 146
147 int 147 int
148 SDL_SemPost (SDL_sem * sem) 148 SDL_SemPost(SDL_sem * sem)
149 { 149 {
150 int retval; 150 int retval;
151 151
152 if (!sem) { 152 if (!sem) {
153 SDL_SetError ("Passed a NULL semaphore"); 153 SDL_SetError("Passed a NULL semaphore");
154 return -1; 154 return -1;
155 } 155 }
156 156
157 retval = sem_post (&sem->sem); 157 retval = sem_post(&sem->sem);
158 if (retval < 0) { 158 if (retval < 0) {
159 SDL_SetError ("sem_post() failed"); 159 SDL_SetError("sem_post() failed");
160 } 160 }
161 return retval; 161 return retval;
162 } 162 }
163 163
164 #endif /* __MACOSX__ */ 164 #endif /* __MACOSX__ */