summaryrefslogtreecommitdiff
path: root/libpthread/tests/test-11.c
diff options
context:
space:
mode:
authorSamuel Thibault <samy@hurd.youpi.perso.aquilenet.fr>2012-05-20 13:37:08 +0000
committerSamuel Thibault <samy@hurd.youpi.perso.aquilenet.fr>2012-05-20 13:37:08 +0000
commit756a64304b61a94b9b57ae88c4af5654152f5b8e (patch)
treec65bf4981fbf56c3d63d58dcd7ad4893d47890db /libpthread/tests/test-11.c
parentd0109384c8d7ae06f50dcf0804aa7d30356dbde0 (diff)
Remove libpthread, now in eglibc
Diffstat (limited to 'libpthread/tests/test-11.c')
-rw-r--r--libpthread/tests/test-11.c143
1 files changed, 0 insertions, 143 deletions
diff --git a/libpthread/tests/test-11.c b/libpthread/tests/test-11.c
deleted file mode 100644
index de779a40..00000000
--- a/libpthread/tests/test-11.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Test rwlocks. */
-
-#define _GNU_SOURCE
-
-#include <pthread.h>
-#include <assert.h>
-#include <error.h>
-#include <errno.h>
-
-#define THREADS 1
-
-int a;
-int b;
-
-/* Get a read lock and assert that a == b. */
-void *
-test1 (void *arg)
-{
- error_t err;
- pthread_rwlock_t *lock = arg;
- int i;
-
- for (i = 0; i < 200; i ++)
- {
- err = pthread_rwlock_rdlock (lock);
- assert (err == 0);
-
- assert (a == b);
-
- sched_yield ();
-
- assert (a == b);
-
- err = pthread_rwlock_unlock (lock);
- assert (err == 0);
- }
-
- return 0;
-}
-
-int
-main (int argc, char **argv)
-{
- error_t err;
- pthread_rwlockattr_t attr;
- pthread_rwlock_t lock;
- int pshared;
-
- int i;
- pthread_t tid[THREADS];
- void *ret;
-
- err = pthread_rwlockattr_init (&attr);
- if (err)
- error (1, err, "pthread_rwlockattr_init");
-
- err = pthread_rwlockattr_getpshared (&attr, &pshared);
- if (err)
- error (1, err, "pthread_rwlockattr_getpshared");
-
- /* Assert the default state as mandated by POSIX. */
- assert (pshared == PTHREAD_PROCESS_PRIVATE);
-
- err = pthread_rwlockattr_setpshared (&attr, pshared);
- if (err)
- error (1, err, "pthread_rwlockattr_setpshared");
-
- err = pthread_rwlock_init (&lock, &attr);
- if (err)
- error (1, err, "pthread_rwlock_init");
-
- err = pthread_rwlockattr_destroy (&attr);
- if (err)
- error (1, err, "pthread_rwlockattr_destroy");
-
- /* Now test the lock. */
-
- for (i = 0; i < THREADS; i ++)
- {
- err = pthread_create (&tid[i], 0, test1, &lock);
- if (err)
- error (1, err, "pthread_create");
- }
-
- for (i = 0; i < 10; i ++)
- {
- sched_yield ();
-
- /* Get a write lock. */
- pthread_rwlock_wrlock (&lock);
- /* Increment a and b giving other threads a chance to run in
- between. */
- sched_yield ();
- a ++;
- sched_yield ();
- b ++;
- sched_yield ();
- /* Unlock. */
- pthread_rwlock_unlock (&lock);
- }
-
- for (i = 0; i < THREADS; i ++)
- {
- err = pthread_join (tid[i], &ret);
- if (err)
- error (1, err, "pthread_join");
- }
-
- /* Read lock it. */
- err = pthread_rwlock_tryrdlock (&lock);
- assert (err == 0);
-
- /* Try to write lock it. It should fail with EBUSY. */
- err = pthread_rwlock_trywrlock (&lock);
- assert (err == EBUSY);
-
- /* Drop the read lock. */
- err = pthread_rwlock_unlock (&lock);
- assert (err == 0);
-
- /* Get a write lock. */
- err = pthread_rwlock_trywrlock (&lock);
- assert (err == 0);
-
- /* Fail trying to acquire another write lock. */
- err = pthread_rwlock_trywrlock (&lock);
- assert (err == EBUSY);
-
- /* Try to get a read lock which should also fail. */
- err = pthread_rwlock_tryrdlock (&lock);
- assert (err == EBUSY);
-
- /* Unlock it. */
- err = pthread_rwlock_unlock (&lock);
- assert (err == 0);
-
-
- err = pthread_rwlock_destroy (&lock);
- if (err)
- error (1, err, "pthread_rwlock_destroy");
-
- return 0;
-}