xref: /original-bsd/sys/nfs/nfsrvcache.h (revision 05cf3734)
1 /*
2  * Copyright (c) 1989 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Rick Macklem at The University of Guelph.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)nfsrvcache.h	7.3 (Berkeley) 06/28/90
11  */
12 
13 /*
14  * Definitions for the server recent request cache
15  */
16 
17 #define	NFSRVCACHESIZ	128
18 #define	NFSRCHSZ	32
19 
20 struct nfsrvcache {
21 	struct	nfsrvcache *rc_chain[2];	/* Hash chain links */
22 	struct	nfsrvcache *rc_next;	/* Lru list */
23 	struct	nfsrvcache *rc_prev;
24 	int	rc_state;		/* Current state of request */
25 	int	rc_flag;		/* Flag bits */
26 	struct	mbuf rc_nam;		/* Sockaddr of requestor */
27 	u_long	rc_xid;			/* rpc id number */
28 	int	rc_proc;		/* rpc proc number */
29 	long	rc_timestamp;		/* Time stamp */
30 	union {
31 		struct mbuf *rc_repmb;	/* Reply mbuf list OR */
32 		int rc_repstat;		/* Reply status */
33 	} rc_un;
34 };
35 
36 #define	rc_forw		rc_chain[0]
37 #define	rc_back		rc_chain[1]
38 #define	rc_status	rc_un.rc_repstat
39 #define	rc_reply	rc_un.rc_repmb
40 
41 #define	put_at_head(rp) \
42 		(rp)->rc_prev->rc_next = (rp)->rc_next; \
43 		(rp)->rc_next->rc_prev = (rp)->rc_prev; \
44 		(rp)->rc_next = nfsrvcachehead.rc_next; \
45 		(rp)->rc_next->rc_prev = (rp); \
46 		nfsrvcachehead.rc_next = (rp); \
47 		(rp)->rc_prev = &nfsrvcachehead
48 
49 /* Cache entry states */
50 #define	RC_UNUSED	0
51 #define	RC_INPROG	1
52 #define	RC_DONE		2
53 
54 /* Return values */
55 #define	RC_DROPIT	0
56 #define	RC_REPLY	1
57 #define	RC_DOIT		2
58 
59 /* Flag bits */
60 #define	RC_LOCKED	0x1
61 #define	RC_WANTED	0x2
62 #define	RC_REPSTATUS	0x4
63 #define	RC_REPMBUF	0x8
64 
65 /* Delay time after completion that request is dropped */
66 #define	RC_DELAY	2		/* seconds */
67 
68