From bf35ff7fad3be3fa0d8ad44e190945a09ce10e39 Mon Sep 17 00:00:00 2001 From: Sam Hartman Date: Wed, 7 Mar 2001 09:47:32 +0000 Subject: [PATCH] Initial revision --- src/libafs/sgi_master | 8 +++ src/lwp/threadname.c | 110 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/libafs/sgi_master create mode 100644 src/lwp/threadname.c diff --git a/src/libafs/sgi_master b/src/libafs/sgi_master new file mode 100644 index 000000000..12e44f516 --- /dev/null +++ b/src/libafs/sgi_master @@ -0,0 +1,8 @@ +* Format defined by: +* master(4) +* +* bc dkip 4 - io +*FLAG PREFIX SOFT #DEV DEPENDENCIESi +jnsw Afs_ - - specfs,bsd + +$$$ \ No newline at end of file diff --git a/src/lwp/threadname.c b/src/lwp/threadname.c new file mode 100644 index 000000000..0b31bd785 --- /dev/null +++ b/src/lwp/threadname.c @@ -0,0 +1,110 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ +/* ********************************************************************** */ +/* */ +/* trheadname.c */ +/* */ +/* Author: Hartmut Reuter */ +/* reuter@rzg.mpg.de */ +/* Date: 01/12/00 */ +/* */ +/* Function - These routiens implement thread names for the */ +/* logging from the servers */ +/* */ +/* ********************************************************************** */ + +#include +#if defined(AFS_PTHREAD_ENV) +#include +#else /* defined(AFS_PTHREAD_ENV) */ +#include "lwp.h" +#endif /* defined(AFS_PTHREAD_ENV) */ + +#define MAX_THREADS 128 +#define MAXTHREADNAMELENGTH 64 +int nThreads = 0; +#if defined(AFS_PTHREAD_ENV) +pthread_t ThreadId[MAX_THREADS]; +#else /* defined(AFS_PTHREAD_ENV) */ +PROCESS ThreadId[MAX_THREADS]; +#endif /* defined(AFS_PTHREAD_ENV) */ +char ThreadName[MAX_THREADS][MAXTHREADNAMELENGTH]; + +char * threadname () +{ + int i; + static char MainThread[] = "main"; + char *ptr; + char *p; +#ifdef AFS_PTHREAD_ENV + pthread_t me; +#else /* AFS_PTHREAD_ENV */ + PROCESS me; +#endif /* AFS_PTHREAD_ENV */ + +#ifdef AFS_PTHREAD_ENV + me = pthread_self(); +#else /* AFS_PTHREAD_ENV */ + me = (PROCESS) LWP_ThreadId(); +#endif /* AFS_PTHREAD_ENV */ + ptr = (char *) &MainThread; + for (i = 0; i < nThreads; i++) { + if (ThreadId[i] == me) { + ptr = (char *)&ThreadName[i]; + break; + } + } + p = ptr; + return p; +} + +int registerthread(id, name) +#ifdef AFS_PTHREAD_ENV + pthread_t id; +#else /* AFS_PTHREAD_ENV */ + PROCESS id; +#endif /* AFS_PTHREAD_ENV */ + char *name; +{ + int i; + + for (i = 0; i < nThreads; i++) { + if (ThreadId[i] == id) { + strncpy(&ThreadName[i][0], name, MAXTHREADNAMELENGTH); + return; + } + } + if (nThreads == MAX_THREADS) return; + ThreadId[nThreads] = id; + strncpy(&ThreadName[nThreads][0], name, MAXTHREADNAMELENGTH); + ThreadName[nThreads][MAXTHREADNAMELENGTH -1] =0; + nThreads++; +} + +int swapthreadname(id, new, old) +#ifdef AFS_PTHREAD_ENV + pthread_t id; +#else /* AFS_PTHREAD_ENV */ + PROCESS id; +#endif /* AFS_PTHREAD_ENV */ + char *new; + char *old; +{ + int i; + + for (i = 0; i < nThreads; i++) { + if (ThreadId[i] == id) { + if (old) + strncpy(old, &ThreadName[i][0], MAXTHREADNAMELENGTH); + strncpy(&ThreadName[i][0], new, MAXTHREADNAMELENGTH); + return 0; + } + } + return 1; +} -- 2.39.5