Home | History | Annotate | Download | only in os2

Lines Matching defs:sem

45         SDL_sem *sem;
48 /* Allocate sem memory */
49 sem = (SDL_sem *)SDL_malloc(sizeof(*sem));
50 if ( sem ) {
52 ulrc = DosCreateMutexSem(NULL,&(sem->id),0,TRUE);
55 SDL_free(sem);
56 sem = NULL;
59 DosCreateEventSem(NULL, &(sem->changed), 0, FALSE);
60 sem->value = initial_value;
61 DosReleaseMutexSem(sem->id);
66 return(sem);
70 DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem *sem)
72 if ( sem ) {
73 if ( sem->id ) {
74 DosCloseEventSem(sem->changed);
75 DosCloseMutexSem(sem->id);
76 sem->id = 0;
78 SDL_free(sem);
82 DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout)
86 if ( ! sem ) {
87 SDL_SetError("Passed a NULL sem");
93 ulrc = DosRequestMutexSem(sem->id, SEM_INDEFINITE_WAIT);
98 } else if (sem->value) {
99 sem->value--;
100 DosReleaseMutexSem(sem->id);
104 DosResetEventSem(sem->changed, &ulPostCount);
105 DosReleaseMutexSem(sem->id);
107 DosWaitEventSem(sem->changed, SEM_INDEFINITE_WAIT);
113 ulrc = DosRequestMutexSem(sem->id, SEM_INDEFINITE_WAIT);
116 if (sem->value)
118 sem->value--;
119 DosReleaseMutexSem(sem->id);
123 DosReleaseMutexSem(sem->id);
132 ulrc = DosRequestMutexSem(sem->id, SEM_INDEFINITE_WAIT);
138 if (sem->value) {
139 sem->value--;
140 DosReleaseMutexSem(sem->id);
144 DosResetEventSem(sem->changed, &ulPostCount);
145 DosReleaseMutexSem(sem->id);
147 ulrc = DosWaitEventSem(sem->changed, timeout);
158 DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem *sem)
160 return SDL_SemWaitTimeout(sem, 0);
163 DECLSPEC int SDLCALL SDL_SemWait(SDL_sem *sem)
165 return SDL_SemWaitTimeout(sem, SDL_MUTEX_MAXWAIT);
169 DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem *sem)
171 if ( ! sem ) {
172 SDL_SetError("Passed a NULL sem");
175 return sem->value;
178 DECLSPEC int SDLCALL SDL_SemPost(SDL_sem *sem)
180 if ( ! sem ) {
181 SDL_SetError("Passed a NULL sem");
184 if ( DosRequestMutexSem(sem->id,SEM_INDEFINITE_WAIT) ) {
188 sem->value++;
189 DosPostEventSem(sem->changed);
190 DosReleaseMutexSem(sem->id);