summaryrefslogtreecommitdiff
path: root/linuxthreads/Examples/ex17.c
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/Examples/ex17.c')
-rw-r--r--linuxthreads/Examples/ex17.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/linuxthreads/Examples/ex17.c b/linuxthreads/Examples/ex17.c
deleted file mode 100644
index 1bc09a5bda..0000000000
--- a/linuxthreads/Examples/ex17.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <limits.h>
-#include <sys/mman.h>
-
-static pthread_mutex_t synch = PTHREAD_MUTEX_INITIALIZER;
-
-static void *
-test_thread (void *v_param)
-{
- pthread_mutex_lock (&synch);
- return NULL;
-}
-
-#define STACKSIZE 0x100000
-
-int
-main (void)
-{
- pthread_t thread;
- pthread_attr_t attr;
- int status;
- void *stack, *stack2;
- size_t stacksize;
-
- pthread_attr_init (&attr);
- stack = mmap (NULL, STACKSIZE,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
- if (stack == MAP_FAILED)
- {
- perror ("mmap failed");
- return 1;
- }
-
- status = pthread_attr_setstack (&attr, stack, STACKSIZE);
- if (status != 0)
- {
- printf ("pthread_attr_setstack failed: %s\n", strerror (status));
- return 1;
- }
-
- status = pthread_attr_getstack (&attr, &stack2, &stacksize);
- if (status != 0)
- {
- printf ("pthread_attr_getstack failed: %s\n", strerror (status));
- return 1;
- }
-
- if (stack2 != stack || stacksize != STACKSIZE)
- {
- printf ("first pthread_attr_getstack returned different stack (%p,%zx)\n"
- "than was set by setstack (%p,%x)\n",
- stack2, stacksize, stack, STACKSIZE);
- return 2;
- }
-
- status = pthread_mutex_lock (&synch);
- if (status != 0)
- {
- printf ("cannot get lock: %s\n", strerror (status));
- return 1;
- }
-
- status = pthread_create (&thread, &attr, test_thread, NULL);
- if (status != 0)
- {
- printf ("pthread_create failed: %s\n", strerror (status));
- return 1;
- }
-
- status = pthread_getattr_np (thread, &attr);
- if (status != 0)
- {
- printf ("pthread_getattr_np failed: %s\n", strerror (status));
- return 1;
- }
-
- status = pthread_attr_getstack (&attr, &stack2, &stacksize);
- if (status != 0)
- {
- printf ("pthread_attr_getstack failed: %s\n", strerror (status));
- return 1;
- }
-
- if (stack2 != stack || stacksize != STACKSIZE)
- {
- printf ("second pthread_attr_getstack returned different stack (%p,%zx)\n"
- "than was set by setstack (%p,%x)\n",
- stack2, stacksize, stack, STACKSIZE);
- return 3;
- }
-
- status = pthread_mutex_unlock (&synch);
- if (status != 0)
- {
- printf ("cannot release lock: %s\n", strerror (status));
- return 1;
- }
-
- /* pthread_detach (thread); */
- if (pthread_join (thread, NULL) != 0)
- {
- printf ("join failed\n");
- return 1;
- }
- return 0;
-}