From 6b8c43559073caa7f0b9db25bab4812606740e7d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 6 Jul 2012 16:04:28 -0400 Subject: [PATCH] Windows: add cm_ServerListSize() cm_ServerListSize returns the length of a cm_serverRef_t list. Change-Id: I6dc1e5e2c23efffe9d6c210ba1c8702d00aabe8f Reviewed-on: http://gerrit.openafs.org/7759 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_server.c | 14 ++++++++++++++ src/WINNT/afsd/cm_server.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index aceb08d42..e3e366c09 100644 --- a/src/WINNT/afsd/cm_server.c +++ b/src/WINNT/afsd/cm_server.c @@ -1081,7 +1081,21 @@ afs_int32 cm_PutServerRef(cm_serverRef_t *tsrp, int locked) return refCount; } +afs_uint32 +cm_ServerListSize(cm_serverRef_t* serversp) +{ + afs_uint32 count = 0; + cm_serverRef_t *tsrp; + lock_ObtainRead(&cm_serverLock); + for (tsrp = serversp; tsrp; tsrp=tsrp->next) { + if (tsrp->status == srv_deleted) + continue; + count++; + } + lock_ReleaseRead(&cm_serverLock); + return count; +} LONG_PTR cm_ChecksumServerList(cm_serverRef_t *serversp) { diff --git a/src/WINNT/afsd/cm_server.h b/src/WINNT/afsd/cm_server.h index aa568b275..8d13aef5c 100644 --- a/src/WINNT/afsd/cm_server.h +++ b/src/WINNT/afsd/cm_server.h @@ -131,6 +131,8 @@ extern void cm_RandomizeServer(cm_serverRef_t** list); extern void cm_FreeServer(cm_server_t* server); +extern afs_uint32 cm_ServerListSize(cm_serverRef_t* list); + #define CM_FREESERVERLIST_DELETE 1 extern void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags); -- 2.39.5