freebsd-5-update-20030213
[openafs.git] / src / config / afs_args.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 /*
11  * AFS system call opcodes
12  */
13
14 #ifndef _AFS_ARGS_H_
15 #define _AFS_ARGS_H_
16
17 #define AFSOP_START_RXCALLBACK    0     /* no aux parms */
18 #define AFSOP_START_AFS           1     /* no aux parms */
19 #define AFSOP_START_BKG           2     /* no aux parms */
20 #define AFSOP_START_TRUNCDAEMON   3     /* no aux parms */
21 #define AFSOP_START_CS            4     /* no aux parms */
22
23 #define AFSOP_ADDCELL             5     /* parm 2 = cell str */
24 #define AFSOP_CACHEINIT           6     /* parms 2-4 -> cache sizes */
25 #define AFSOP_CACHEINFO           7     /* the cacheinfo file */
26 #define AFSOP_VOLUMEINFO          8     /* the volumeinfo file */
27 #define AFSOP_CACHEFILE           9     /* a random cache file (V*) */
28 #define AFSOP_CACHEINODE         10     /* random cache file by inode */
29 #define AFSOP_AFSLOG             11     /* output log file */
30 #define AFSOP_ROOTVOLUME         12     /* non-standard root volume name */
31 #define AFSOP_STARTLOG           14     /* temporary: Start afs logging */
32 #define AFSOP_ENDLOG             15     /* temporary: End afs logging */
33 #define AFSOP_AFS_VFSMOUNT       16     /* vfsmount cover for hpux */
34 #define AFSOP_ADVISEADDR         17     /* to init rx cid generator */
35 #define AFSOP_CLOSEWAIT          18     /* make all closes synchronous */
36 #define AFSOP_RXEVENT_DAEMON     19     /* rxevent daemon */
37 #define AFSOP_GETMTU             20     /* stand-in for SIOCGIFMTU, for now */
38 #define AFSOP_GETIFADDRS         21     /* get machine's ethernet interfaces */
39
40 #define AFSOP_ADDCELL2           29     /* 2nd add cell protocol interface */
41 #define AFSOP_AFSDB_HANDLER      30     /* userspace AFSDB lookup handler */
42 #define AFSOP_SET_DYNROOT        31     /* enable/disable dynroot support */
43 #define AFSOP_ADDCELLALIAS       32     /* create alias for existing cell */
44 #define AFSOP_SET_FAKESTAT       33     /* enable/disable fakestat support */
45 #define AFSOP_CELLINFO           34     /* set the cellinfo file name */
46 #define AFSOP_SET_THISCELL       35     /* set the primary cell */
47 #define AFSOP_BASIC_INIT         36     /* used to be part of START_AFS */
48
49 /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
50 #define AFSCALL_PIOCTL          20
51 #define AFSCALL_SETPAG          21
52 #define AFSCALL_IOPEN           22
53 #define AFSCALL_ICREATE         23
54 #define AFSCALL_IREAD           24
55 #define AFSCALL_IWRITE          25
56 #define AFSCALL_IINC            26
57 #define AFSCALL_IDEC            27
58 #define AFSCALL_CALL            28
59
60 #define AFSCALL_ICL             30
61
62 /* 64 bit versions of inode system calls. */
63 #define AFSCALL_IOPEN64         41
64 #define AFSCALL_ICREATE64       42
65 #define AFSCALL_IINC64          43
66 #define AFSCALL_IDEC64          44
67 #define AFSCALL_ILISTINODE64    45      /* Used by ListViceInodes */
68 #define AFSCALL_ICREATENAME64   46      /* pass in platform specific pointer
69                                          * used to create a name in in a
70                                          * directory.
71                                          */
72 #ifdef AFS_SGI_VNODE_GLUE
73 #define AFSCALL_INIT_KERNEL_CONFIG 47   /* set vnode glue ops. */
74 #endif
75
76 #ifdef  AFS_SGI53_ENV
77 #define AFSOP_NFSSTATICADDR      32     /* to contents addr of nfs kernel addr */
78 #define AFSOP_NFSSTATICADDRPTR   33     /* pass addr of variable containing 
79                                            address into kernel. */
80 #define AFSOP_NFSSTATICADDR2     34     /* pass address in as hyper. */
81 #define AFSOP_SBLOCKSTATICADDR2  35     /* for sblock and sbunlock */
82 #endif
83 #define AFSOP_GETMASK            42     /* stand-in for SIOCGIFNETMASK */
84 /* For SGI, this can't interfere with any of the 64 bit inode calls. */
85 #define AFSOP_RXLISTENER_DAEMON  48     /* starts kernel RX listener */
86
87 /* these are for initialization flags */
88
89 #define AFSCALL_INIT_MEMCACHE 0x1
90 #define AFSCALL_INIT_MEMCACHE_SLEEP 0x2 /* Use osi_Alloc to allocate memcache
91                                          * instead of osi_Alloc_NoSleep */
92
93 /* flags for rxstats pioctl */
94
95 #define AFSCALL_RXSTATS_MASK    0x7 /* Valid flag bits */
96 #define AFSCALL_RXSTATS_ENABLE  0x1 /* Enable RX stats */
97 #define AFSCALL_RXSTATS_DISABLE 0x2 /* Disable RX stats */
98 #define AFSCALL_RXSTATS_CLEAR   0x4 /* Clear RX stats */
99
100 #define AFSOP_GO                100     /* whether settime is being done */
101 /* not for initialization: debugging assist */
102 #define AFSOP_CHECKLOCKS        200     /* dump lock state */
103 #define AFSOP_SHUTDOWN          201     /* Totally shutdown afs (deallocate all) */
104
105 /* The following aren't used by afs_initState but by afs_termState! */
106 #define AFSOP_STOP_RXCALLBACK   210     /* Stop CALLBACK process */
107 #define AFSOP_STOP_AFS          211     /* Stop AFS process */
108 #define AFSOP_STOP_CS           216     /* Stop CheckServer daemon. */
109 #define AFSOP_STOP_BKG          212     /* Stop BKG process */
110 #define AFSOP_STOP_TRUNCDAEMON  213     /* Stop cache truncate daemon */
111 /* #define AFSOP_STOP_RXEVENT   214     defined in osi.h              */
112 /* #define AFSOP_STOP_COMPLETE     215  defined in osi.h              */
113 /* #define AFSOP_STOP_RXK_LISTENER   217     defined in osi.h         */
114 #define AFSOP_STOP_AFSDB        218     /* Stop AFSDB handler */
115
116 /* Main afs syscall entry; this number may vary per system (i.e. defined in afs/param.h) */
117 #ifndef AFS_SYSCALL
118 #define AFS_SYSCALL             31
119 #endif
120
121 /* arguments passed by afsd */
122 struct afs_cacheParams {
123     afs_int32 cacheScaches;
124     afs_int32 cacheFiles;
125     afs_int32 cacheBlocks;
126     afs_int32 cacheDcaches;
127     afs_int32 cacheVolumes;
128     afs_int32 chunkSize;
129     afs_int32 setTimeFlag;
130     afs_int32 memCacheFlag;
131     afs_int32 inodes;
132     afs_int32 users;
133 };
134
135 /*
136  * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
137  * accomodate pointer alignment.
138  */
139 /* Used in rx.c as well as afs directory. */
140 #if     defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
141 /* XXX Because of rxkad_cprivate... XXX */
142 #define AFS_MDALLOCSIZ  (127*sizeof(void *))        /* "Medium" allocated size */
143 #define AFS_MALLOC_LOW_WATER    50 /* Min free blocks before allocating more */
144 #define AFS_SMALLOCSIZ  (38*sizeof(void *))         /* "Small" allocated size */
145 #else
146 #define AFS_SMALLOCSIZ  (64*sizeof(void *))         /*  "Small" allocated size */
147 #endif
148
149 /* Cache configuration available through the client callback interface */
150 typedef struct cm_initparams_v1 {
151     afs_uint32 nChunkFiles;
152     afs_uint32 nStatCaches;
153     afs_uint32 nDataCaches;
154     afs_uint32 nVolumeCaches;
155     afs_uint32 firstChunkSize;
156     afs_uint32 otherChunkSize;
157     afs_uint32 cacheSize;
158     afs_uint32 setTime;
159     afs_uint32 memCache;
160 } cm_initparams_v1;
161
162 /*
163  * If you need to change afs_cacheParams, you should probably create a brand
164  * new structure.  Keeping the old structure will allow backwards compatibility
165  * with old clients (even if it is only used to calculate allocation size).
166  * If you do change the size or the format, you'll need to bump
167  * AFS_CLIENT_CONFIG_RETRIEVAL_VERSION.  This allows some primitive form
168  * of versioning a la rxdebug.
169  */
170
171 #define AFS_CLIENT_RETRIEVAL_VERSION            1       /* latest version */
172 #define AFS_CLIENT_RETRIEVAL_FIRST_EDITION      1       /* first version */
173
174 #endif /* _AFS_ARGS_H_ */