summaryrefslogtreecommitdiff
path: root/tests/mutex3.c
diff options
context:
space:
mode:
authorrpj <rpj>1999-02-22 02:54:12 +0000
committerrpj <rpj>1999-02-22 02:54:12 +0000
commit2ef097640758653a0e9d63e90a4aac329cd86368 (patch)
tree71751f699b0aedba3227446ac228d30f2a127173 /tests/mutex3.c
parent943bc9bb02212649a83ec32152299d50d34226e6 (diff)
1999-02-23 Ross Johnson <rpj@ise.canberra.edu.au>
* Makefile: Some refinement. * *.c: More exhaustive checking through assertions; clean up; add some more tests.
Diffstat (limited to 'tests/mutex3.c')
-rw-r--r--tests/mutex3.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/tests/mutex3.c b/tests/mutex3.c
index 2bb6106..26cb070 100644
--- a/tests/mutex3.c
+++ b/tests/mutex3.c
@@ -1,12 +1,44 @@
-#include <pthread.h>
+/*
+ * mutex3.c
+ *
+ * Declare a static mutex object, lock it, trylock it,
+ * and then unlock it again.
+ *
+ * Depends on API functions:
+ * pthread_mutex_lock()
+ * pthread_mutex_trylock()
+ * pthread_mutex_unlock()
+ */
-pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+#include "test.h"
+
+pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
+static int washere = 0;
+
+void * func(void * arg)
+{
+ assert(pthread_mutex_trylock(&mutex1) == EBUSY);
+
+ washere = 1;
+
+ return 0;
+}
+
int
main()
{
- pthread_mutex_lock(&mutex);
- /* do stuff */
- pthread_mutex_unlock(&mutex);
+ pthread_t t;
+
+ assert(pthread_mutex_lock(&mutex1) == 0);
+
+ assert(pthread_create(&t, NULL, func, NULL) == 0);
+
+ Sleep(2000);
+
+ assert(pthread_mutex_unlock(&mutex1) == 0);
+
+ assert(washere == 1);
+
return 0;
}