Windows: restructure daemon state tracking
[openafs.git] / src / WINNT / afsd / cm_daemon.h
index 0872601..1aa833b 100644 (file)
@@ -18,30 +18,29 @@ extern long cm_daemonCheckCBInterval;
 extern long cm_daemonCheckLockInterval;
 extern long cm_daemonTokenCheckInterval;
 
-extern osi_rwlock_t cm_daemonLock;
+extern osi_rwlock_t *cm_daemonLockp;
+extern int cm_nDaemons;
 
 void cm_DaemonShutdown(void);
 
 void cm_InitDaemon(int nDaemons);
 
-typedef afs_int32 (cm_bkgProc_t)(cm_scache_t *scp, afs_uint32 p1, afs_uint32 p2, afs_uint32 p3,
-       afs_uint32 p4, struct cm_user *up, cm_req_t *reqp);
+/* cm_bkgProc_t must free the rock */
+typedef afs_int32 (cm_bkgProc_t)(cm_scache_t *scp, void *rockp, struct cm_user *userp, cm_req_t *reqp);
 
 typedef struct cm_bkgRequest {
-       osi_queue_t q;
-       cm_bkgProc_t *procp;
-        cm_scache_t *scp;
-        afs_uint32 p1;
-        afs_uint32 p2;
-        afs_uint32 p3;
-        afs_uint32 p4;
-        cm_user_t *userp;
-        cm_req_t req;
+    osi_queue_t q;
+    cm_bkgProc_t *procp;
+    void * rockp;
+    cm_scache_t *scp;
+    cm_user_t *userp;
+    cm_req_t req;
 } cm_bkgRequest_t;
 
-extern void cm_QueueBKGRequest(cm_scache_t *scp, cm_bkgProc_t *procp, afs_uint32 p1,
-       afs_uint32 p2, afs_uint32 p3, afs_uint32 p4, cm_user_t *userp, cm_req_t *reqp);
+extern int cm_QueueBKGRequest(cm_scache_t *scp, cm_bkgProc_t *procp, void *rockp, cm_user_t *userp, cm_req_t *reqp);
 
+/* Daemon count must be divisible by two */
+#define CM_MIN_DAEMONS  2
 #define CM_MAX_DAEMONS 64
 
 #endif /*  OPENAFS_WINNT_AFSD_CM_DAEMON_H */