Mercurial > sdl-ios-xcode
annotate src/thread/pth/SDL_sysmutex.c @ 571:8e3ce997621c
Date: Thu, 16 Jan 2003 13:48:31 +0200
From: "Mike Gorchak"
Subject: All QNX patches
whole patches concerning QNX. Almost all code has been rewritten by Julian
and me. Added initial support for hw overlays in QNX and many many others
fixes.
P.S. This patches has been reviewed by Dave Rempel from QSSL and included in
SDL 1.2.5 distribution, which coming on 3rd party CD for newest 6.2.1
version of QNX, which will be available soon.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 20 Jan 2003 01:38:37 +0000 |
parents | 1d74ddc90cb2 |
children | 3692456e7b0f |
rev | line source |
---|---|
329
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 * GNU pth mutexes |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 * |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 * Patrice Mandin |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 #include <pth.h> |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 #include "SDL_error.h" |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 #include "SDL_mutex.h" |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 #include "SDL_sysmutex_c.h" |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 /* Create a mutex */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 SDL_mutex *SDL_CreateMutex(void) |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 SDL_mutex *mutex; |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 /* Allocate mutex memory */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 mutex = (SDL_mutex *)malloc(sizeof(*mutex)); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 if ( mutex ) { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 /* Create the mutex, with initial value signaled */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 if (!pth_mutex_init(&(mutex->mutexpth_p))) { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 SDL_SetError("Couldn't create mutex"); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 free(mutex); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 mutex = NULL; |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 } else { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 SDL_OutOfMemory(); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 return(mutex); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 /* Free the mutex */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 void SDL_DestroyMutex(SDL_mutex *mutex) |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 if ( mutex ) { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 free(mutex); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 /* Lock the mutex */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 int SDL_mutexP(SDL_mutex *mutex) |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 if ( mutex == NULL ) { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 SDL_SetError("Passed a NULL mutex"); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 return -1; |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 pth_mutex_acquire(&(mutex->mutexpth_p), FALSE, NULL); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 return(0); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 /* Unlock the mutex */ |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 int SDL_mutexV(SDL_mutex *mutex) |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 if ( mutex == NULL ) { |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 SDL_SetError("Passed a NULL mutex"); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 return -1; |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 } |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 pth_mutex_release(&(mutex->mutexpth_p)); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 return(0); |
1d74ddc90cb2
Patrice's fixes for GNU Pthread support
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 } |