]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-rx-assign-thread-id-key-to-periodic-helpers-20030117
authorRainer Toebbicke <Rainer.Toebbicke@cern.ch>
Fri, 17 Jan 2003 18:18:08 +0000 (18:18 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 17 Jan 2003 18:18:08 +0000 (18:18 +0000)
so each gets own holdbits

(cherry picked from commit ea4f1a80d73f62d91f0375d75dec67d38bd86f24)

src/rx/rx_globals.h
src/rx/rx_pthread.c
src/viced/viced.c

index bd467e37ffe474892c8443f31bb5d2c3e2bc62b0..bcdf2dccb6a83af7b690ad0d02f25f816c9a2049 100644 (file)
@@ -375,6 +375,9 @@ EXT int rxi_callAbortDelay INIT(3000);
 
 #if defined(AFS_PTHREAD_ENV)
 EXT pthread_key_t rx_thread_id_key;
+/* keep track of pthread numbers - protected by rx_stats_mutex, 
+   except in rx_Init() before mutex exists! */
+EXT int rxi_pthread_hinum INIT(0);
 #endif
 
 #if defined(RX_ENABLE_LOCKS)
index 17f88813aaa4e1477ecf93452c4b07acf5ed3c8b..da4a5d181646abfe763cf0c890ec499a36942d28 100644 (file)
@@ -133,6 +133,9 @@ void rxi_StartServerProc(proc, stacksize)
        printf("Unable to Create Rx server thread\n");
        exit(1);
     }
+    MUTEX_ENTER(&rx_stats_mutex);
+    ++rxi_pthread_hinum;
+    MUTEX_EXIT(&rx_stats_mutex);
     AFS_SIGSET_RESTORE();
 }
 
@@ -330,6 +333,9 @@ void rxi_StartListener() {
        printf("Unable to create Rx event handling thread\n");
        exit(1);
     }
+    MUTEX_ENTER(&rx_stats_mutex);
+    ++rxi_pthread_hinum;
+    MUTEX_EXIT(&rx_stats_mutex);
     AFS_SIGSET_RESTORE();
 
     assert(pthread_mutex_lock(&listener_mutex)==0);
@@ -371,6 +377,7 @@ rxi_Listen(sock)
        printf("Unable to create socket listener thread\n");
        exit(1);
     }
+    ++rxi_pthread_hinum;
     AFS_SIGSET_RESTORE();
     return 0;
 }
index ec254109303884b2539f453a99224bd234c9fcb6..09ef38251c5ecb5443421c26f116d5766a3f5bb7 100644 (file)
@@ -635,6 +635,18 @@ main(argc, argv)
 }
 
 
+static void setThreadId(char *s)
+{
+#ifdef AFS_PTHREAD_ENV
+    /* set our 'thread-id' so that the host hold table works */
+    MUTEX_ENTER(&rx_stats_mutex);   /* protects rxi_pthread_hinum */ 
+    ++rxi_pthread_hinum;
+    pthread_setspecific(rx_thread_id_key, (void *)rxi_pthread_hinum);
+    MUTEX_EXIT(&rx_stats_mutex);
+    ViceLog(0,("Set thread id %d for '%s'\n", pthread_getspecific(rx_thread_id_key), s));
+#endif
+}
+
 /* This LWP does things roughly every 5 minutes */
 static FiveMinuteCheckLWP()
 
@@ -643,6 +655,7 @@ static FiveMinuteCheckLWP()
     char tbuffer[32];
 
     ViceLog(1, ("Starting five minute check process\n"));
+    setThreadId("FiveMinuteCheckLWP");
     while (1) {
 #ifdef AFS_PTHREAD_ENV
        sleep(fiveminutes);
@@ -681,6 +694,7 @@ static HostCheckLWP()
 
 {
     ViceLog(1, ("Starting Host check process\n"));
+    setThreadId("HostCheckLWP");
     while(1) {
 #ifdef AFS_PTHREAD_ENV
        sleep(fiveminutes);