summaryrefslogtreecommitdiff
path: root/libthreads/cthread_data.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 01:13:43 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 01:20:03 +0100
commit3b14ab0254a131e458c4f5ffdee931e868206424 (patch)
tree0a88ed88851e966d3c5f2ac08b4eb243c99c96b0 /libthreads/cthread_data.c
parent986c7a7d686a850830f9fc5bea1fadcfe9f4999c (diff)
libthreads: Remove
libthreads is most probably completely broken, and not the long-term road anyway. * config.make.in (VERSIONING): Remove. * configure.ac: Test for pfinet assembly compatibility instead of libthreads assembly compatibility. Do not set VERSIONING. * libthreads: Remove directory. * Makefile (lib-subdirs): Remove libthreads. * doc/hurd.texi (Threads Library): Rename references to libthreads into libpthread. * release/rfloppy.copy: Do not objcopy lib/libthreads.so. * release/tool-Makefile (rfloppy-solib): Remove libthreads.
Diffstat (limited to 'libthreads/cthread_data.c')
-rw-r--r--libthreads/cthread_data.c195
1 files changed, 0 insertions, 195 deletions
diff --git a/libthreads/cthread_data.c b/libthreads/cthread_data.c
deleted file mode 100644
index 02e6fa82..00000000
--- a/libthreads/cthread_data.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Mach Operating System
- * Copyright (c) 1992,1991 Carnegie-Mellon University
- * All rights reserved. The CMU software License Agreement specifies
- * the terms and conditions for use and redistribution.
- */
-/*
- * HISTORY
- * $Log: cthread_data.c,v $
- * Revision 2.4 93/05/10 17:51:20 rvb
- * Make cthread_set_data and cthread_data macros.
- * [93/05/06 rvb]
- *
- * Revision 2.3 93/01/14 18:04:52 danner
- * Converted file to ANSI C.
- * Removed usage of obsolete type any_t.
- * [92/12/18 pds]
- *
- * Revision 2.2 92/05/23 11:35:17 jfriedl
- * Snarfed from multi-server sources at CMU.
- * No stdio (for use with single-server).
- *
- *
- * Revision 2.2 91/03/25 14:14:45 jjc
- * For compatibility with cthread_data:
- * 1) Added routines, cthread_data and cthread_set_data,
- * which use the new routines in here.
- * 2) Defined CTHREAD_KEY_RESERVED as the key used to
- * access cthread_data.
- * 3) Changed the first free key from CTHREAD_KEY_NULL
- * to CTHREAD_KEY_FIRST.
- * [91/03/18 jjc]
- * Made simple implementation from POSIX threads specification for
- * thread specific data.
- * [91/03/07 jjc]
- *
- */
-
-#include <stdio.h>
-#include <cthreads.h>
-
-#define CTHREAD_KEY_MAX (cthread_key_t)8 /* max. no. of keys */
-#define CTHREAD_KEY_NULL (cthread_key_t)0
-
-#if defined(CTHREAD_DATA)
-/*
- * Key reserved for cthread_data
- */
-#define CTHREAD_KEY_RESERVED CTHREAD_KEY_NULL
-
-#define CTHREAD_KEY_FIRST (cthread_key_t)1 /* first free key */
-#else /* not defined(CTHREAD_DATA) */
-#define CTHREAD_KEY_FIRST CTHREAD_KEY_NULL /* first free key */
-#endif /* defined(CTHREAD_DATA) */
-
-
-/* lock protecting key creation */
-struct mutex cthread_data_lock = MUTEX_INITIALIZER;
-
-/* next free key */
-cthread_key_t cthread_key = CTHREAD_KEY_FIRST;
-
-
-/*
- * Create key to private data visible to all threads in task.
- * Different threads may use same key, but the values bound to the key are
- * maintained on a thread specific basis.
- * Returns 0 if successful and returns -1 otherwise.
- */
-int
-cthread_keycreate(cthread_key_t *key)
-{
- if (cthread_key >= CTHREAD_KEY_FIRST && cthread_key < CTHREAD_KEY_MAX) {
- mutex_lock((mutex_t)&cthread_data_lock);
- *key = cthread_key++;
- mutex_unlock((mutex_t)&cthread_data_lock);
- return(0);
- }
- else { /* out of keys */
- *key = CTHREAD_KEY_INVALID;
- return(-1);
- }
-}
-
-
-/*
- * Get private data associated with given key
- * Returns 0 if successful and returns -1 if the key is invalid.
- * If the calling thread doesn't have a value for the given key,
- * the value returned is CTHREAD_DATA_VALUE_NULL.
- */
-int
-cthread_getspecific(cthread_key_t key, void **value)
-{
- register cthread_t self;
- register void **thread_data;
-
- *value = CTHREAD_DATA_VALUE_NULL;
- if (key < CTHREAD_KEY_NULL || key >= cthread_key)
- return(-1);
-
- self = cthread_self();
- thread_data = (void **)(self->private_data);
- if (thread_data != NULL)
- *value = thread_data[key];
-
- return(0);
-}
-
-
-/*
- * Set private data associated with given key
- * Returns 0 if successful and returns -1 otherwise.
- */
-int
-cthread_setspecific(cthread_key_t key, void *value)
-{
- register int i;
- register cthread_t self;
- register void **thread_data;
-
- if (key < CTHREAD_KEY_NULL || key >= cthread_key)
- return(-1);
-
- self = cthread_self();
- thread_data = (void **)(self->private_data);
- if (thread_data != NULL)
- thread_data[key] = value;
- else {
- /*
- * Allocate and initialize thread data table,
- * point cthread_data at it, and then set the
- * data for the given key with the given value.
- */
- thread_data = malloc(CTHREAD_KEY_MAX * sizeof(void *));
- if (thread_data == NULL) {
- printf("cthread_setspecific: malloc failed\n");
- return(-1);
- }
- self->private_data = thread_data;
-
- for (i = 0; i < CTHREAD_KEY_MAX; i++)
- thread_data[i] = CTHREAD_DATA_VALUE_NULL;
-
- thread_data[key] = value;
- }
- return(0);
-}
-
-
-#if defined(CTHREAD_DATA_XX)
-/*
- * Set thread specific "global" variable,
- * using new POSIX routines.
- * Crash and burn if the thread given isn't the calling thread.
- * XXX For compatibility with old cthread_set_data() XXX
- */
-int
-cthread_set_data(cthread_t t, void *x)
-{
- register cthread_t self;
-
- self = cthread_self();
- if (t == self)
- return(cthread_setspecific(CTHREAD_KEY_RESERVED, x));
- else {
- ASSERT(t == self);
- return(-1);
- }
-}
-
-
-/*
- * Get thread specific "global" variable,
- * using new POSIX routines.
- * Crash and burn if the thread given isn't the calling thread.
- * XXX For compatibility with old cthread_data() XXX
- */
-void *
-cthread_data(cthread_t t)
-{
- register cthread_t self;
- void *value;
-
- self = cthread_self();
- if (t == self) {
- (void)cthread_getspecific(CTHREAD_KEY_RESERVED, &value);
- return(value);
- }
- else {
- ASSERT(t == self);
- return(NULL);
- }
-}
-#endif /* defined(CTHREAD_DATA_XX) */