2 * Copyright 2000, International Business Machines Corporation and others.
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
11 * AFS system call opcodes
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 */
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 */
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 #define AFSOP_SET_BACKUPTREE 37 /* enable backup tree support */
49 #define AFSOP_SET_RXPCK 38 /*set rx_extraPackets*/
50 #define AFSOP_BUCKETPCT 39 /* bucket percentage */
52 /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
53 #define AFSCALL_PIOCTL 20
54 #define AFSCALL_SETPAG 21
55 #define AFSCALL_IOPEN 22
56 #define AFSCALL_ICREATE 23
57 #define AFSCALL_IREAD 24
58 #define AFSCALL_IWRITE 25
59 #define AFSCALL_IINC 26
60 #define AFSCALL_IDEC 27
61 #define AFSCALL_CALL 28
63 #define AFSCALL_ICL 30
65 /* 64 bit versions of inode system calls. */
66 #define AFSCALL_IOPEN64 41
67 #define AFSCALL_ICREATE64 42
68 #define AFSCALL_IINC64 43
69 #define AFSCALL_IDEC64 44
70 #define AFSCALL_ILISTINODE64 45 /* Used by ListViceInodes */
71 #define AFSCALL_ICREATENAME64 46 /* pass in platform specific pointer
72 * used to create a name in in a
75 #ifdef AFS_SGI_VNODE_GLUE
76 #define AFSCALL_INIT_KERNEL_CONFIG 47 /* set vnode glue ops. */
80 #define AFSOP_NFSSTATICADDR 32 /* to contents addr of nfs kernel addr */
81 #define AFSOP_NFSSTATICADDRPTR 33 /* pass addr of variable containing
82 * address into kernel. */
83 #define AFSOP_NFSSTATICADDR2 34 /* pass address in as hyper. */
84 #define AFSOP_SBLOCKSTATICADDR2 35 /* for sblock and sbunlock */
86 #define AFSOP_GETMASK 42 /* stand-in for SIOCGIFNETMASK */
87 /* For SGI, this can't interfere with any of the 64 bit inode calls. */
88 #define AFSOP_RXLISTENER_DAEMON 48 /* starts kernel RX listener */
90 /* skip 64 bit calls */
91 #define AFSOP_CACHEBASEDIR 50 /* cache base dir */
92 #define AFSOP_CACHEDIRS 51 /* number of files per dir */
93 #define AFSOP_CACHEFILES 52 /* number of files */
95 #define AFSOP_SETINT 60 /* we should just set key/value pairs
96 for things which are just ints */
98 /* these are for initialization flags */
100 #define AFSCALL_INIT_MEMCACHE 0x1
101 #define AFSCALL_INIT_MEMCACHE_SLEEP 0x2 /* Use osi_Alloc to allocate memcache
102 * instead of osi_Alloc_NoSleep */
104 /* flags for rxstats pioctl */
106 #define AFSCALL_RXSTATS_MASK 0x7 /* Valid flag bits */
107 #define AFSCALL_RXSTATS_ENABLE 0x1 /* Enable RX stats */
108 #define AFSCALL_RXSTATS_DISABLE 0x2 /* Disable RX stats */
109 #define AFSCALL_RXSTATS_CLEAR 0x4 /* Clear RX stats */
111 #define AFSOP_GO 100 /* whether settime is being done */
112 /* not for initialization: debugging assist */
113 #define AFSOP_CHECKLOCKS 200 /* dump lock state */
114 #define AFSOP_SHUTDOWN 201 /* Totally shutdown afs (deallocate all) */
116 /* The following aren't used by afs_initState but by afs_termState! */
117 #define AFSOP_STOP_RXCALLBACK 210 /* Stop CALLBACK process */
118 #define AFSOP_STOP_AFS 211 /* Stop AFS process */
119 #define AFSOP_STOP_CS 216 /* Stop CheckServer daemon. */
120 #define AFSOP_STOP_BKG 212 /* Stop BKG process */
121 #define AFSOP_STOP_TRUNCDAEMON 213 /* Stop cache truncate daemon */
122 /* #define AFSOP_STOP_RXEVENT 214 defined in osi.h */
123 /* #define AFSOP_STOP_COMPLETE 215 defined in osi.h */
124 /* #define AFSOP_STOP_RXK_LISTENER 217 defined in osi.h */
125 #define AFSOP_STOP_AFSDB 218 /* Stop AFSDB handler */
126 #define AFSOP_STOP_NETIF 219 /* Stop Netif poller */
128 /* Main afs syscall entry; this number may vary per system (i.e. defined in afs/param.h) */
130 #define AFS_SYSCALL 31
133 /* arguments passed by afsd */
134 struct afs_cacheParams {
135 afs_int32 cacheScaches;
136 afs_int32 cacheFiles;
137 afs_int32 cacheBlocks;
138 afs_int32 cacheDcaches;
139 afs_int32 cacheVolumes;
141 afs_int32 setTimeFlag;
142 afs_int32 memCacheFlag;
145 afs_int32 dynamic_vcaches;
149 * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
150 * accomodate pointer alignment.
152 /* Used in rx.c as well as afs directory. */
153 #if defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
154 /* XXX Because of rxkad_cprivate... XXX */
155 #define AFS_MDALLOCSIZ (127*sizeof(void *)) /* "Medium" allocated size */
156 #define AFS_MALLOC_LOW_WATER 50 /* Min free blocks before allocating more */
157 #define AFS_SMALLOCSIZ (38*sizeof(void *)) /* "Small" allocated size */
159 #define AFS_SMALLOCSIZ (64*sizeof(void *)) /* "Small" allocated size */
162 /* Cache configuration available through the client callback interface */
163 typedef struct cm_initparams_v1 {
164 afs_uint32 nChunkFiles;
165 afs_uint32 nStatCaches;
166 afs_uint32 nDataCaches;
167 afs_uint32 nVolumeCaches;
168 afs_uint32 firstChunkSize;
169 afs_uint32 otherChunkSize;
170 afs_uint32 cacheSize;
176 * If you need to change afs_cacheParams, you should probably create a brand
177 * new structure. Keeping the old structure will allow backwards compatibility
178 * with old clients (even if it is only used to calculate allocation size).
179 * If you do change the size or the format, you'll need to bump
180 * AFS_CLIENT_CONFIG_RETRIEVAL_VERSION. This allows some primitive form
181 * of versioning a la rxdebug.
184 #define AFS_CLIENT_RETRIEVAL_VERSION 1 /* latest version */
185 #define AFS_CLIENT_RETRIEVAL_FIRST_EDITION 1 /* first version */
187 /* Defines and structures for the AFS proc replacement layer for the original syscall (AFS_SYSCALL) strategy */
189 #ifdef AFS_LINUX20_ENV
191 #define PROC_FSDIRNAME "openafs"
192 #define PROC_SYSCALL_NAME "afs_ioctl"
193 #define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl"
194 #define PROC_SYSCALL_ARLA_FNAME "/proc/fs/nnpfs/afs_ioctl"
195 #define PROC_CELLSERVDB_NAME "CellServDB"
196 #define PROC_PEER_NAME "rx_peer"
197 #define PROC_CONN_NAME "rx_conn"
198 #define PROC_CALL_NAME "rx_call"
199 #define PROC_RX_NAME "rx"
200 #define PROC_SERVICES_NAME "rx_services"
201 #define PROC_RXSTATS_NAME "rx_stats"
202 #define VIOC_SYSCALL_TYPE 'C'
203 #define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *)
204 #define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int)
214 struct afsprocdata32 {
219 unsigned int syscall;
224 #ifdef AFS_DARWIN80_ENV
226 unsigned long syscall;
227 unsigned long param1;
228 unsigned long param2;
229 unsigned long param3;
230 unsigned long param4;
231 unsigned long param5;
232 unsigned long param6;
233 unsigned long retval;
235 #define VIOC_SYSCALL_TYPE 'C'
236 #define VIOC_SYSCALL _IOWR(VIOC_SYSCALL_TYPE,1,struct afssysargs)
237 #define SYSCALL_DEV_FNAME "/dev/openafs_ioctl"
240 #ifdef AFS_CACHE_VNODE_PATH
241 #define AFS_CACHE_CELLS_INODE -2
242 #define AFS_CACHE_ITEMS_INODE -3
243 #define AFS_CACHE_VOLUME_INODE -4
246 #endif /* _AFS_ARGS_H_ */