Windows: restructure daemon state tracking
[openafs.git] / src / WINNT / afsd / cm_daemon.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
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
8  */
9
10 #ifndef OPENAFS_WINNT_AFSD_CM_DAEMON_H
11 #define OPENAFS_WINNT_AFSD_CM_DAEMON_H 1
12
13 /* externs */
14 extern long cm_daemonCheckDownInterval;
15 extern long cm_daemonCheckUpInterval;
16 extern long cm_daemonCheckVolInterval;
17 extern long cm_daemonCheckCBInterval;
18 extern long cm_daemonCheckLockInterval;
19 extern long cm_daemonTokenCheckInterval;
20
21 extern osi_rwlock_t *cm_daemonLockp;
22 extern int cm_nDaemons;
23
24 void cm_DaemonShutdown(void);
25
26 void cm_InitDaemon(int nDaemons);
27
28 /* cm_bkgProc_t must free the rock */
29 typedef afs_int32 (cm_bkgProc_t)(cm_scache_t *scp, void *rockp, struct cm_user *userp, cm_req_t *reqp);
30
31 typedef struct cm_bkgRequest {
32     osi_queue_t q;
33     cm_bkgProc_t *procp;
34     void * rockp;
35     cm_scache_t *scp;
36     cm_user_t *userp;
37     cm_req_t req;
38 } cm_bkgRequest_t;
39
40 extern int cm_QueueBKGRequest(cm_scache_t *scp, cm_bkgProc_t *procp, void *rockp, cm_user_t *userp, cm_req_t *reqp);
41
42 /* Daemon count must be divisible by two */
43 #define CM_MIN_DAEMONS  2
44 #define CM_MAX_DAEMONS 64
45
46 #endif /*  OPENAFS_WINNT_AFSD_CM_DAEMON_H */