diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0f144e7..6869a2c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -26,4 +26,5 @@
 	twoparams.s \
 	pth_cvsimple.c pth_simple_threads.c pth_simple_mutex.c \
 	bt_everything.c bt_literal.c \
-	pth_threadpool.c pth_specific.c pth_mutexspeed.c malloc3.c
+	pth_threadpool.c pth_specific.c pth_mutexspeed.c malloc3.c \
+	pth_once.c
diff --git a/tests/pth_once.c b/tests/pth_once.c
new file mode 100644
index 0000000..0d795c5
--- /dev/null
+++ b/tests/pth_once.c
@@ -0,0 +1,81 @@
+/********************************************************
+ * An example source module to accompany...
+ *
+ * "Using POSIX Threads: Programming with Pthreads"
+ *     by Brad nichols, Dick Buttlar, Jackie Farrell
+ *     O'Reilly & Associates, Inc.
+ *
+ ********************************************************
+ * once_exam.c
+ *
+ * An example of using the pthreads_once() call to execute an
+ * initialization procedure.
+ *
+ * A program spawns multiple threads and each one tries to
+ * execute the routine welcome() using the once call. Only
+ * the first thread into the once routine will actually
+ * execute welcome().
+ *
+ * The program's main thread synchronizes its exit with the
+ * exit of the threads using the pthread_join() operation.
+ *
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <pthread.h>
+
+#define  NUM_THREADS   10
+
+static pthread_once_t welcome_once_block = PTHREAD_ONCE_INIT;
+
+void welcome(void)
+{
+	printf("welcome: Welcome\n");
+}
+
+void *identify_yourself(void *arg)
+{
+        int *pid=(int *)arg;
+	int rtn;
+
+	if ((rtn = pthread_once(&welcome_once_block,
+			        welcome)) != 0) {
+		fprintf(stderr, "pthread_once failed with %d",rtn);
+		pthread_exit((void *)NULL);
+	}
+	printf("identify_yourself: Hi, I'm thread # %d\n",*pid);
+        return(NULL);
+}
+
+extern int
+main(void)
+{
+	int             *id_arg, thread_num, rtn;
+	pthread_t       threads[NUM_THREADS];
+
+	id_arg = (int *)malloc(NUM_THREADS*sizeof(int));
+
+	for (thread_num = 0; thread_num < NUM_THREADS; (thread_num)++) {
+
+		id_arg[thread_num] = thread_num;
+
+		if (( rtn = pthread_create(&threads[thread_num], 
+					   NULL,
+					   identify_yourself,
+					   (void *) &(id_arg[thread_num]))) 
+		    != 0) {
+		  fprintf(stderr, "pthread_create failed with %d",rtn);
+		  exit(1);
+		}
+	} 	
+
+	for (thread_num = 0; thread_num < NUM_THREADS; thread_num++) {
+	  pthread_join(threads[thread_num], NULL);
+	  printf("main: joined to thread %d\n", thread_num);
+	}
+	printf("main: Goodbye\n");
+}
