2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
9 /* ********************************************************************** */
13 /* Author: Hartmut Reuter */
14 /* reuter@rzg.mpg.de */
17 /* Function - These routiens implement thread names for the */
18 /* logging from the servers */
20 /* ********************************************************************** */
22 #include <afs/param.h>
23 #include <afsconfig.h>
30 #if defined(AFS_PTHREAD_ENV)
32 #else /* defined(AFS_PTHREAD_ENV) */
34 #endif /* defined(AFS_PTHREAD_ENV) */
36 #define MAX_THREADS 128
37 #define MAXTHREADNAMELENGTH 64
39 #if defined(AFS_PTHREAD_ENV)
40 pthread_t ThreadId[MAX_THREADS];
41 #else /* defined(AFS_PTHREAD_ENV) */
42 PROCESS ThreadId[MAX_THREADS];
43 #endif /* defined(AFS_PTHREAD_ENV) */
44 char ThreadName[MAX_THREADS][MAXTHREADNAMELENGTH];
49 static char MainThread[] = "main";
52 #ifdef AFS_PTHREAD_ENV
54 #else /* AFS_PTHREAD_ENV */
56 #endif /* AFS_PTHREAD_ENV */
58 #ifdef AFS_PTHREAD_ENV
60 #else /* AFS_PTHREAD_ENV */
61 me = (PROCESS) LWP_ThreadId();
62 #endif /* AFS_PTHREAD_ENV */
63 ptr = (char *) &MainThread;
64 for (i = 0; i < nThreads; i++) {
65 if (ThreadId[i] == me) {
66 ptr = (char *)&ThreadName[i];
74 int registerthread(id, name)
75 #ifdef AFS_PTHREAD_ENV
77 #else /* AFS_PTHREAD_ENV */
79 #endif /* AFS_PTHREAD_ENV */
84 for (i = 0; i < nThreads; i++) {
85 if (ThreadId[i] == id) {
86 strncpy(&ThreadName[i][0], name, MAXTHREADNAMELENGTH);
90 if (nThreads == MAX_THREADS) return;
91 ThreadId[nThreads] = id;
92 strncpy(&ThreadName[nThreads][0], name, MAXTHREADNAMELENGTH);
93 ThreadName[nThreads][MAXTHREADNAMELENGTH -1] =0;
97 int swapthreadname(id, new, old)
98 #ifdef AFS_PTHREAD_ENV
100 #else /* AFS_PTHREAD_ENV */
102 #endif /* AFS_PTHREAD_ENV */
108 for (i = 0; i < nThreads; i++) {
109 if (ThreadId[i] == id) {
111 strncpy(old, &ThreadName[i][0], MAXTHREADNAMELENGTH);
112 strncpy(&ThreadName[i][0], new, MAXTHREADNAMELENGTH);