From c630f81194666e438d93b79fc2510d112050e524 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 19 Apr 2005 06:04:03 +0000 Subject: [PATCH] windows-rx-ts-fpq-20050418 FIXES 17805 Add a new function called rx_StartClientThread() which parallels the behavior of rx_StartServer but is used for initializing client threads. ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== FIXES 17805 Add a new function called rx_StartClientThread() which parallels the behavior of rx_StartServer but is used for initializing client threads. Also, disable RX_TSFPQ_ENABLE for Windows as it slows the client down. --- src/WINNT/afsd/cm_daemon.c | 2 ++ src/WINNT/afsd/smb.c | 2 ++ src/libafsrpc/afsrpc.def | 1 + src/rx/rx.c | 16 ++++++++++++++++ src/rx/rx_globals.h | 7 ++++--- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/WINNT/afsd/cm_daemon.c b/src/WINNT/afsd/cm_daemon.c index 5a0106dcd..81ba1459c 100644 --- a/src/WINNT/afsd/cm_daemon.c +++ b/src/WINNT/afsd/cm_daemon.c @@ -42,6 +42,8 @@ void cm_BkgDaemon(long parm) { cm_bkgRequest_t *rp; + rx_StartClientThread(); + lock_ObtainWrite(&cm_daemonLock); while (daemon_ShutdownFlag == 0) { if (!cm_bkgListEndp) { diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index df404130f..f7f7c5e98 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -6956,6 +6956,8 @@ void smb_Server(VOID *parmp) dos_ptr dos_ncb; #endif /* DJGPP */ + rx_StartClientThread(); + outncbp = GetNCB(); outbufp = GetPacket(); outbufp->ncbp = outncbp; diff --git a/src/libafsrpc/afsrpc.def b/src/libafsrpc/afsrpc.def index 00bc3da9a..69feb9674 100644 --- a/src/libafsrpc/afsrpc.def +++ b/src/libafsrpc/afsrpc.def @@ -212,5 +212,6 @@ EXPORTS RXAFS_ResidencyCmd @217 StartRXAFS_FetchData64 @218 StartRXAFS_StoreData64 @219 + rx_StartClientThread @220 diff --git a/src/rx/rx.c b/src/rx/rx.c index 55c45a779..5f129ac12 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -663,6 +663,22 @@ rxi_StartServerProcs(int nExistingProcs) } #endif /* KERNEL */ +#ifdef AFS_NT40_ENV +/* This routine is only required on Windows */ +void +rx_StartClientThread(void) +{ +#ifdef AFS_PTHREAD_ENV + int pid; + pid = (int) pthread_self(); +#endif /* AFS_PTHREAD_ENV */ +#ifdef RX_ENABLE_TSFPQ + rx_TSFPQMaxProcs++; + RX_TS_FPQ_COMPUTE_LIMITS; +#endif /* RX_ENABLE_TSFPQ */ +} +#endif /* AFS_NT40_ENV */ + /* This routine must be called if any services are exported. If the * donateMe flag is set, the calling process is donated to the server * process pool */ diff --git a/src/rx/rx_globals.h b/src/rx/rx_globals.h index fffb414d0..494738f6c 100644 --- a/src/rx/rx_globals.h +++ b/src/rx/rx_globals.h @@ -208,7 +208,9 @@ EXT struct rx_queue rx_freePacketQueue; } while(0) #ifdef RX_ENABLE_LOCKS EXT afs_kmutex_t rx_freePktQ_lock; -#ifdef AFS_PTHREAD_ENV +#endif /* RX_ENABLE_LOCKS */ + +#if defined(AFS_PTHREAD_ENV) && !defined(AFS_NT40_ENV) #define RX_ENABLE_TSFPQ EXT int rx_TSFPQGlobSize INIT(3); /* number of packets to transfer between global and local queues in one op */ EXT int rx_TSFPQLocalMax INIT(15); /* max number of packets on local FPQ before returning a glob to the global pool */ @@ -298,8 +300,7 @@ EXT void rxi_MorePacketsTSFPQ(int apackets, int flush_global, int num_keep_local RX_FPQ_MARK_FREE(p); \ (rx_ts_info_p)->_FPQ.len++; \ } while(0) -#endif /* AFS_PTHREAD_ENV */ -#endif /* RX_ENABLE_LOCKS */ +#endif /* AFS_PTHREAD_ENV && !AFS_NT40_ENV */ /* Number of free packets */ EXT int rx_nFreePackets INIT(0); -- 2.39.5