Commit | Line | Data |
---|---|---|
805e021f CE |
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 _AFS_PROTOTYPES_H_ | |
11 | #define _AFS_PROTOTYPES_H_ | |
12 | ||
13 | /* afs_analyze.c */ | |
14 | extern int afs_Analyze(struct afs_conn *aconn, struct rx_connection *rxconn, | |
15 | afs_int32 acode, struct VenusFid *afid, | |
16 | struct vrequest *areq, | |
17 | int op, afs_int32 locktype, struct cell *cellp); | |
18 | ||
19 | /* afs_axscache.c */ | |
20 | extern afs_rwlock_t afs_xaxs; | |
21 | extern struct axscache *afs_SlowFindAxs(struct axscache **cachep, | |
22 | afs_int32 id); | |
23 | extern struct axscache *axs_Alloc(void); | |
24 | extern void afs_RemoveAxs(struct axscache **headp, struct axscache *axsp); | |
25 | extern void afs_FreeAllAxs(struct axscache **headp); | |
26 | extern void shutdown_xscache(void); | |
27 | ||
28 | /* afs_buffer.c */ | |
29 | extern void shutdown_bufferpackage(void); | |
30 | ||
31 | /* afs_call.c */ | |
32 | extern int afs_cold_shutdown; | |
33 | extern char afs_rootVolumeName[MAXROOTVOLNAMELEN]; | |
34 | extern void afs_shutdown(void); | |
35 | extern void afs_FlushCBs(void); | |
36 | extern int afs_CheckInit(void); | |
37 | extern void afs_shutdown(void); | |
38 | extern void shutdown_afstest(void); | |
39 | extern int afs_syscall_call(long parm, long parm2, long parm3, | |
40 | long parm4, long parm5, long parm6); | |
41 | #if defined(AFS_DARWIN100_ENV) | |
42 | extern int afs_syscall64_call(user_addr_t parm, user_addr_t parm2, | |
43 | user_addr_t parm3, user_addr_t parm4, | |
44 | user_addr_t parm5, user_addr_t parm6); | |
45 | #endif | |
46 | ||
47 | ||
48 | /* afs_callback.c */ | |
49 | extern afs_int32 afs_allCBs; | |
50 | extern afs_int32 afs_oddCBs; | |
51 | extern afs_int32 afs_evenCBs; | |
52 | extern afs_int32 afs_allZaps; | |
53 | extern afs_int32 afs_oddZaps; | |
54 | extern afs_int32 afs_evenZaps; | |
55 | extern afs_int32 afs_connectBacks; | |
56 | extern unsigned long lastCallBack_vnode; | |
57 | extern unsigned int lastCallBack_dv; | |
58 | extern osi_timeval_t lastCallBack_time; | |
59 | extern struct interfaceAddr afs_cb_interface; | |
60 | ||
61 | extern int afs_RXCallBackServer(void); | |
62 | extern int SRXAFSCB_GetCE(struct rx_call *a_call, afs_int32 a_index, | |
63 | struct AFSDBCacheEntry *a_result); | |
64 | extern int SRXAFSCB_GetCE64(struct rx_call *a_call, afs_int32 a_index, | |
65 | struct AFSDBCacheEntry64 *a_result); | |
66 | extern int SRXAFSCB_GetLock(struct rx_call *a_call, afs_int32 a_index, | |
67 | struct AFSDBLock *a_result); | |
68 | extern int SRXAFSCB_CallBack(struct rx_call *a_call, | |
69 | struct AFSCBFids *a_fids, | |
70 | struct AFSCBs *a_callbacks); | |
71 | extern int SRXAFSCB_Probe(struct rx_call *a_call); | |
72 | extern int SRXAFSCB_InitCallBackState(struct rx_call *a_call); | |
73 | extern int SRXAFSCB_XStatsVersion(struct rx_call *a_call, | |
74 | afs_int32 * a_versionP); | |
75 | extern int SRXAFSCB_GetXStats(struct rx_call *a_call, | |
76 | afs_int32 a_clientVersionNum, | |
77 | afs_int32 a_collectionNumber, | |
78 | afs_int32 * a_srvVersionNumP, | |
79 | afs_int32 * a_timeP, AFSCB_CollData * a_dataP); | |
80 | extern int afs_RXCallBackServer(void); | |
81 | extern int shutdown_CB(void); | |
82 | extern int SRXAFSCB_InitCallBackState2(struct rx_call *a_call, | |
83 | struct interfaceAddr *addr); | |
84 | extern int SRXAFSCB_WhoAreYou(struct rx_call *a_call, | |
85 | struct interfaceAddr *addr); | |
86 | extern int SRXAFSCB_InitCallBackState3(struct rx_call *a_call, | |
87 | afsUUID * a_uuid); | |
88 | extern int SRXAFSCB_ProbeUuid(struct rx_call *a_call, afsUUID * a_uuid); | |
89 | extern int SRXAFSCB_GetServerPrefs(struct rx_call *a_call, afs_int32 a_index, | |
90 | afs_int32 * a_srvr_addr, | |
91 | afs_int32 * a_srvr_rank); | |
92 | extern int SRXAFSCB_GetCellServDB(struct rx_call *a_call, afs_int32 a_index, | |
93 | char **a_name, serverList * a_hosts); | |
94 | extern int SRXAFSCB_GetLocalCell(struct rx_call *a_call, char **a_name); | |
95 | extern int SRXAFSCB_GetCacheConfig(struct rx_call *a_call, | |
96 | afs_uint32 callerVersion, | |
97 | afs_uint32 * serverVersion, | |
98 | afs_uint32 * configCount, | |
99 | cacheConfig * config); | |
100 | extern int SRXAFSCB_FetchData(struct rx_call *rxcall, struct AFSFid *Fid, | |
101 | afs_int32 Fd, afs_int64 Position, | |
102 | afs_int64 Length, afs_int64 * TotalLength); | |
103 | extern int SRXAFSCB_StoreData(struct rx_call *rxcall, struct AFSFid *Fid, | |
104 | afs_int32 Fd, afs_int64 Position, | |
105 | afs_int64 Length, afs_int64 * TotalLength); | |
106 | ||
107 | ||
108 | /* afs_cbqueue.c */ | |
109 | extern afs_rwlock_t afs_xcbhash; | |
110 | extern void afs_QueueCallback(struct vcache *avc, unsigned int atime, | |
111 | struct volume *avp); | |
112 | extern void afs_CheckCallbacks(unsigned int secs); | |
113 | extern void afs_FlushCBs(void); | |
114 | extern void afs_FlushServerCBs(struct server *srvp); | |
115 | extern int afs_BumpBase(void); | |
116 | extern void afs_InitCBQueue(int doLockInit); | |
117 | extern void afs_DequeueCallback(struct vcache *avc); | |
118 | ||
119 | /* afs_cell.c */ | |
120 | extern afs_int32 afs_cellindex; | |
121 | extern afs_rwlock_t afs_xcell; | |
122 | extern afs_rwlock_t afsdb_client_lock; | |
123 | extern afs_rwlock_t afsdb_req_lock; | |
124 | extern struct afs_q CellLRU; | |
125 | ||
126 | extern void afs_CellInit(void); | |
127 | extern void shutdown_cell(void); | |
128 | extern int afs_cellname_init(afs_dcache_id_t *inode, int lookupcode); | |
129 | extern int afs_cellname_write(void); | |
130 | extern afs_int32 afs_NewCell(char *acellName, afs_int32 * acellHosts, | |
131 | int aflags, char *linkedcname, u_short fsport, | |
132 | u_short vlport, int timeout); | |
133 | extern afs_int32 afs_SetPrimaryCell(char *acellName); | |
134 | extern struct cell *afs_GetCell(afs_int32 acell, afs_int32 locktype); | |
135 | extern struct cell *afs_GetCellStale(afs_int32 acell, afs_int32 locktype); | |
136 | extern struct cell *afs_GetCellByHandle(void *handle, afs_int32 locktype); | |
137 | extern struct cell *afs_GetCellByIndex(afs_int32 cellidx, afs_int32 locktype); | |
138 | extern struct cell *afs_GetCellByName(char *acellName, afs_int32 locktype); | |
139 | extern struct cell *afs_GetPrimaryCell(afs_int32 locktype); | |
140 | extern afs_int32 afs_GetPrimaryCellNum(void); | |
141 | extern int afs_IsPrimaryCellNum(afs_int32 cellnum); | |
142 | extern int afs_IsPrimaryCell(struct cell *cell); | |
143 | extern void *afs_TraverseCells(void *(*cb) (struct cell *, void *), | |
144 | void *arg); | |
145 | extern int afs_CellOrAliasExists(char *aname); | |
146 | extern int afs_CellNumValid(afs_int32 cellnum); | |
147 | extern afs_int32 afs_NewCellAlias(char *alias, char *cell); | |
148 | extern struct cell_alias *afs_GetCellAlias(int index); | |
149 | extern void afs_PutCellAlias(struct cell_alias *a); | |
150 | extern int afs_AFSDBHandler(char *acellName, int acellNameLen, | |
151 | afs_int32 * kernelMsg); | |
152 | extern void afs_LookupAFSDB(char *acellName); | |
153 | extern void afs_StopAFSDB(void); | |
154 | extern void afs_RemoveCellEntry(struct server *srvp); | |
155 | ||
156 | /* afs_chunk.c */ | |
157 | extern afs_int32 afs_FirstCSize; | |
158 | extern afs_int32 afs_OtherCSize; | |
159 | extern afs_int32 afs_LogChunk; | |
160 | ||
161 | /* afs_cell.c */ | |
162 | extern struct cell *afs_GetRealCellByIndex(afs_int32 cellindex, | |
163 | afs_int32 locktype, | |
164 | afs_int32 refresh); | |
165 | ||
166 | /* afs_conn.c */ | |
167 | extern afs_int32 cryptall; | |
168 | extern afs_rwlock_t afs_xinterface; | |
169 | extern afs_rwlock_t afs_xconn; | |
170 | extern struct afs_conn *afs_Conn(struct VenusFid *afid, | |
171 | struct vrequest *areq, | |
172 | afs_int32 locktype, | |
173 | struct rx_connection **rxconn); | |
174 | extern struct afs_conn *afs_ConnBySA(struct srvAddr *sap, unsigned short aport, | |
175 | afs_int32 acell, struct unixuser *tu, | |
176 | int force_if_down, afs_int32 create, | |
177 | afs_int32 locktype, afs_int32 replicated, | |
178 | struct rx_connection **rxconn); | |
179 | extern struct afs_conn *afs_ConnByMHosts(struct server *ahosts[], | |
180 | unsigned short aport, afs_int32 acell, | |
181 | struct vrequest *areq, | |
182 | afs_int32 locktype, | |
183 | afs_int32 replicated, | |
184 | struct rx_connection **rxconn); | |
185 | extern struct afs_conn *afs_ConnByHost(struct server *aserver, | |
186 | unsigned short aport, afs_int32 acell, | |
187 | struct vrequest *areq, int aforce, | |
188 | afs_int32 locktype, | |
189 | afs_int32 replicated, | |
190 | struct rx_connection **rxconn); | |
191 | extern void afs_PutConn(struct afs_conn *ac, struct rx_connection *rxconn, | |
192 | afs_int32 locktype); | |
193 | extern void afs_ReleaseConns(struct sa_conn_vector *tcv); | |
194 | extern void afs_ReleaseConnsUser(register struct unixuser *au); | |
195 | extern void ForceNewConnections(struct srvAddr *sap); | |
196 | ||
197 | ||
198 | /* afs_daemons.c */ | |
199 | extern afs_lock_t afs_xbrs; | |
200 | extern short afs_brsWaiters; | |
201 | extern short afs_brsDaemons; | |
202 | extern struct brequest afs_brs[NBRS]; | |
203 | extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler; | |
204 | extern afs_int32 afs_gcpags; | |
205 | extern afs_int32 afs_gcpags_procsize; | |
206 | extern afs_int32 afs_CheckServerDaemonStarted; | |
207 | extern afs_int32 afs_probe_interval; | |
208 | extern afs_int32 afs_preCache; | |
209 | ||
210 | extern void afs_Daemon(void); | |
211 | extern struct brequest *afs_BQueue(short aopcode, | |
212 | struct vcache *avc, | |
213 | afs_int32 dontwait, afs_int32 ause, | |
214 | afs_ucred_t *acred, | |
215 | afs_size_t asparm0, afs_size_t asparm1, | |
216 | void *apparm0, void *apparm1, | |
217 | void *apparm2); | |
218 | extern void afs_SetCheckServerNATmode(int isnat); | |
219 | extern void afs_CheckServerDaemon(void); | |
220 | extern int afs_CheckRootVolume(void); | |
221 | extern void afs_BRelease(struct brequest *ab); | |
222 | extern int afs_BBusy(void); | |
223 | extern int afs_BioDaemon(afs_int32 nbiods); | |
224 | #ifdef AFS_NEW_BKG | |
225 | extern int afs_BackgroundDaemon(struct afs_uspc_param *uspc, void *param1, void *param2); | |
226 | #else | |
227 | extern void afs_BackgroundDaemon(void); | |
228 | #endif | |
229 | extern void shutdown_daemons(void); | |
230 | extern int afs_sgidaemon(void); | |
231 | ||
232 | ||
233 | /* afs_dcache.c */ | |
234 | extern u_int afs_min_cache; | |
235 | extern afs_int32 *afs_dvhashTbl; | |
236 | extern afs_int32 afs_dhashsize; | |
237 | extern afs_rwlock_t afs_xdcache; | |
238 | extern afs_size_t afs_vmMappingEnd; | |
239 | extern afs_int32 afs_blocksUsed; | |
240 | extern afs_int32 afs_blocksDiscarded; | |
241 | extern int afs_WaitForCacheDrain; | |
242 | extern int cacheDiskType; | |
243 | extern afs_uint32 afs_tpct1, afs_tpct2, splitdcache; | |
244 | extern unsigned char *afs_indexFlags; | |
245 | extern struct afs_cacheOps *afs_cacheType; | |
246 | extern afs_dcache_id_t cacheInode; | |
247 | extern struct osi_file *afs_cacheInodep; | |
248 | extern int DCHash(struct VenusFid *fid, afs_int32 chunk); | |
249 | extern int DVHash(struct VenusFid *fid); | |
250 | extern int afs_dcacheInit(int afiles, int ablocks, int aDentries, int achunk, | |
251 | int aflags); | |
252 | extern int afs_PutDCache(struct dcache *adc); | |
253 | extern void afs_FlushDCache(struct dcache *adc); | |
254 | extern void shutdown_dcache(void); | |
255 | extern void afs_CacheTruncateDaemon(void); | |
256 | extern afs_int32 afs_fsfragsize; | |
257 | extern struct dcache *afs_MemGetDSlot(afs_int32 aslot, dslot_state type); | |
258 | extern struct dcache *afs_GetDCache(struct vcache *avc, | |
259 | afs_size_t abyte, | |
260 | struct vrequest *areq, | |
261 | afs_size_t * aoffset, afs_size_t * alen, | |
262 | int aflags); | |
263 | extern struct dcache *afs_FindDCache(struct vcache *avc, | |
264 | afs_size_t abyte); | |
265 | extern void afs_StoreWarn(afs_int32 acode, afs_int32 avolume, | |
266 | afs_int32 aflags); | |
267 | extern void afs_MaybeWakeupTruncateDaemon(void); | |
268 | extern void afs_CacheTruncateDaemon(void); | |
269 | extern void afs_AdjustSize(struct dcache *adc, | |
270 | afs_int32 newSize); | |
271 | extern int afs_HashOutDCache(struct dcache *adc, int zap); | |
272 | extern int afs_MaybeFreeDiscardedDCache(void); | |
273 | extern int afs_RefDCache(struct dcache *adc); | |
274 | extern void afs_TryToSmush(struct vcache *avc, | |
275 | afs_ucred_t *acred, int sync); | |
276 | extern void updateV2DC(int lockVc, struct vcache *v, struct dcache *d, | |
277 | int src); | |
278 | extern int afs_WriteThroughDSlots(void); | |
279 | extern struct dcache *afs_UFSGetDSlot(afs_int32 aslot, dslot_state type); | |
280 | extern int afs_WriteDCache(struct dcache *adc, int atime); | |
281 | extern int afs_wakeup(struct vcache *avc); | |
282 | extern int afs_InitCacheFile(char *afile, ino_t ainode); | |
283 | extern int afs_DCacheMissingChunks(struct vcache *avc); | |
284 | extern struct dcache *afs_ObtainDCacheForWriting(struct vcache *avc, | |
285 | afs_size_t filePos, | |
286 | afs_size_t len, | |
287 | struct vrequest *areq, | |
288 | int noLock); | |
289 | extern void afs_PopulateDCache(struct vcache *avc, afs_size_t apos, | |
290 | struct vrequest *areq); | |
291 | ||
292 | /* afs_disconnected.c */ | |
293 | ||
294 | /* afs_dynroot.c */ | |
295 | extern afs_rwlock_t afs_dynrootDirLock; | |
296 | extern afs_rwlock_t afs_dynSymlinkLock; | |
297 | extern int afs_IsDynrootVolume(struct volume *v); | |
298 | extern int afs_IsDynrootFid(struct VenusFid *fid); | |
299 | extern int afs_IsDynrootMountFid(struct VenusFid *fid); | |
300 | extern int afs_IsDynrootAnyFid(struct VenusFid *fid); | |
301 | extern void afs_GetDynrootFid(struct VenusFid *fid); | |
302 | extern void afs_GetDynrootMountFid(struct VenusFid *fid); | |
303 | extern int afs_IsDynroot(struct vcache *avc); | |
304 | extern int afs_IsDynrootMount(struct vcache *avc); | |
305 | extern int afs_IsDynrootAny(struct vcache *avc); | |
306 | extern void afs_DynrootInvalidate(void); | |
307 | extern void afs_GetDynroot(char **dynrootDir, int *dynrootLen, | |
308 | struct AFSFetchStatus *status); | |
309 | extern void afs_GetDynrootMount(char **dynrootDir, int *dynrootLen, | |
310 | struct AFSFetchStatus *status); | |
311 | extern void afs_PutDynroot(void); | |
312 | extern int afs_DynrootNewVnode(struct vcache *avc, | |
313 | struct AFSFetchStatus *status); | |
314 | extern int afs_InitDynroot(void); | |
315 | extern int afs_SetDynrootEnable(int enable); | |
316 | extern int afs_GetDynrootEnable(void); | |
317 | extern int afs_DynrootVOPRemove(struct vcache *avc, afs_ucred_t *acred, | |
318 | char *aname); | |
319 | extern int afs_DynrootVOPSymlink(struct vcache *avc, afs_ucred_t *acred, | |
320 | char *aname, char *atargetName); | |
321 | ||
322 | /* afs_error.c */ | |
323 | extern void init_et_to_sys_error(void); | |
324 | extern afs_int32 et_to_sys_error(afs_int32 in); | |
325 | extern void afs_FinalizeReq(struct vrequest *areq); | |
326 | extern int afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where); | |
327 | extern void afs_CopyError(struct vrequest *afrom, | |
328 | struct vrequest *ato); | |
329 | extern void init_sys_error_to_et(void); | |
330 | ||
331 | /* afs_exporter.c */ | |
332 | extern struct afs_exporter *root_exported; | |
333 | extern struct afs_exporter *exporter_find(int type); | |
334 | extern void shutdown_exporter(void); | |
335 | ||
336 | /* afs_fetchstore.c */ | |
337 | extern int afs_UFSCacheFetchProc(struct rx_call *, struct osi_file *, | |
338 | afs_size_t, struct dcache *, | |
339 | struct vcache *, afs_size_t *, | |
340 | afs_size_t *, afs_int32); | |
341 | ||
342 | extern int afs_UFSCacheStoreProc(struct rx_call *, struct osi_file *, | |
343 | afs_int32, struct vcache *, | |
344 | int *, afs_size_t *, | |
345 | afs_size_t *); | |
346 | ||
347 | /* afs_icl.c */ | |
348 | extern struct afs_icl_set *afs_icl_allSets; | |
349 | extern int afs_icl_InitLogs(void); | |
350 | extern void shutdown_icl(void); | |
351 | extern int afs_icl_CreateLog(char *name, afs_int32 logSize, | |
352 | struct afs_icl_log **outLogpp); | |
353 | extern int afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, | |
354 | afs_uint32 flags, | |
355 | struct afs_icl_log **outLogpp); | |
356 | extern int afs_icl_CopyOut(struct afs_icl_log *logp, | |
357 | afs_int32 * bufferp, afs_int32 * bufSizep, | |
358 | afs_uint32 * cookiep, afs_int32 * flagsp); | |
359 | extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, | |
360 | afs_int32 * curSizep); | |
361 | extern int afs_icl_LogHold(struct afs_icl_log *logp); | |
362 | extern int afs_icl_LogHoldNL(struct afs_icl_log *logp); | |
363 | extern int afs_icl_LogUse(struct afs_icl_log *logp); | |
364 | extern int afs_icl_LogFreeUse(struct afs_icl_log *logp); | |
365 | extern int afs_icl_LogSetSize(struct afs_icl_log *logp, | |
366 | afs_int32 logSize); | |
367 | extern int afs_icl_ZapLog(struct afs_icl_log *logp); | |
368 | extern int afs_icl_LogRele(struct afs_icl_log *logp); | |
369 | extern int afs_icl_LogReleNL(struct afs_icl_log *logp); | |
370 | extern int afs_icl_ZeroLog(struct afs_icl_log *logp); | |
371 | extern int afs_icl_LogFree(struct afs_icl_log *logp); | |
372 | extern struct afs_icl_log *afs_icl_FindLog(char *name); | |
373 | extern int | |
374 | afs_icl_EnumerateLogs(int (*aproc) | |
375 | ||
376 | (char *name, char *arock, struct afs_icl_log * tp), | |
377 | char *arock); | |
378 | extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, | |
379 | struct afs_icl_log *fatalLogp, | |
380 | struct afs_icl_set **outSetpp); | |
381 | extern int afs_icl_CreateSetWithFlags(char *name, | |
382 | struct afs_icl_log *baseLogp, | |
383 | struct afs_icl_log *fatalLogp, | |
384 | afs_uint32 flags, | |
385 | struct afs_icl_set **outSetpp); | |
386 | extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, | |
387 | int setValue); | |
388 | extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, | |
389 | int *getValuep); | |
390 | extern int afs_icl_ZeroSet(struct afs_icl_set *setp); | |
391 | extern int | |
392 | afs_icl_EnumerateSets(int (*aproc) | |
393 | ||
394 | (char *name, char *arock, struct afs_icl_log * tp), | |
395 | char *arock); | |
396 | extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, | |
397 | struct afs_icl_log *newlogp); | |
398 | extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); | |
399 | extern int afs_icl_SetHold(struct afs_icl_set *setp); | |
400 | extern int afs_icl_ZapSet(struct afs_icl_set *setp); | |
401 | extern int afs_icl_SetRele(struct afs_icl_set *setp); | |
402 | extern int afs_icl_SetFree(struct afs_icl_set *setp); | |
403 | extern struct afs_icl_set *afs_icl_FindSet(char *name); | |
404 | ||
405 | extern int afs_icl_Event4(struct afs_icl_set *setp, | |
406 | afs_int32 eventID, afs_int32 lAndT, long p1, | |
407 | long p2, long p3, long p4); | |
408 | extern int afs_icl_Event3(struct afs_icl_set *setp, | |
409 | afs_int32 eventID, afs_int32 lAndT, long p1, | |
410 | long p2, long p3); | |
411 | extern int afs_icl_Event2(struct afs_icl_set *setp, | |
412 | afs_int32 eventID, afs_int32 lAndT, long p1, | |
413 | long p2); | |
414 | extern int afs_icl_Event1(struct afs_icl_set *setp, | |
415 | afs_int32 eventID, afs_int32 lAndT, long p1); | |
416 | extern int afs_icl_Event0(struct afs_icl_set *setp, | |
417 | afs_int32 eventID, afs_int32 lAndT); | |
418 | extern void afs_icl_AppendRecord(struct afs_icl_log *logp, | |
419 | afs_int32 op, afs_int32 types, long p1, | |
420 | long p2, long p3, long p4); | |
421 | #if defined(AFS_NBSD_ENV) | |
422 | extern int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, | |
423 | register_t *retval); | |
424 | #else | |
425 | extern int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, | |
426 | long *retval); | |
427 | #endif | |
428 | #ifdef AFS_DARWIN100_ENV | |
429 | extern int Afscall64_icl(int opcode, user_addr_t p1, user_addr_t p2, | |
430 | user_addr_t p3, user_addr_t p4, int *retval); | |
431 | #endif | |
432 | ||
433 | /* afs_init.c */ | |
434 | extern struct cm_initparams cm_initParams; | |
435 | extern int afs_resourceinit_flag; | |
436 | extern afs_rwlock_t afs_puttofileLock; | |
437 | extern char *afs_sysname; | |
438 | extern char *afs_sysnamelist[MAXNUMSYSNAMES]; | |
439 | extern int afs_sysnamecount; | |
440 | extern int afs_sysnamegen; | |
441 | extern afs_int32 cacheInfoModTime; | |
442 | extern int afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, | |
443 | afs_int32 ablocks, afs_int32 aDentries, | |
444 | afs_int32 aVolumes, afs_int32 achunk, | |
445 | afs_int32 aflags, afs_int32 ninodes, | |
446 | afs_int32 nusers, afs_int32 dynamic_vcaches); | |
447 | extern void afs_ComputeCacheParms(void); | |
448 | extern void afs_InitFHeader(struct afs_fheader *aheader); | |
449 | extern int afs_InitCacheInfo(char *afile); | |
450 | extern int afs_InitVolumeInfo(char *afile); | |
451 | extern int afs_InitCellInfo(char *afile); | |
452 | extern int afs_ResourceInit(int preallocs); | |
453 | extern void shutdown_cache(void); | |
454 | extern void shutdown_vnodeops(void); | |
455 | extern void shutdown_AFS(void); | |
456 | extern int afs_LookupInodeByPath(char *filename, afs_ufs_dcache_id_t *inode, | |
457 | struct vnode **fvpp); | |
458 | ||
459 | /* afs_lock.c */ | |
460 | extern void Lock_Init(struct afs_lock *lock); | |
461 | extern void ObtainLock(struct afs_lock *lock, int how, | |
462 | unsigned int src_indicator); | |
463 | extern void ReleaseLock(struct afs_lock *lock, int how); | |
464 | extern int Afs_Lock_Trace(int op, struct afs_lock *alock, int type, | |
465 | char *file, int line); | |
466 | extern void Afs_Lock_Obtain(struct afs_lock *lock, int how); | |
467 | extern void Afs_Lock_ReleaseR(struct afs_lock *lock); | |
468 | extern void Afs_Lock_ReleaseW(struct afs_lock *lock); | |
469 | extern void afs_osi_SleepR(char *addr, | |
470 | struct afs_lock *alock); | |
471 | extern void afs_osi_SleepW(char *addr, | |
472 | struct afs_lock *alock); | |
473 | extern void afs_osi_SleepS(char *addr, | |
474 | struct afs_lock *alock); | |
475 | ||
476 | ||
477 | ||
478 | ||
479 | /* afs_mariner.c */ | |
480 | extern afs_int32 afs_mariner; | |
481 | extern afs_int32 afs_marinerHost; | |
482 | extern struct rx_service *afs_server; | |
483 | extern int afs_AddMarinerName(char *aname, | |
484 | struct vcache *avc); | |
485 | extern char *afs_GetMariner(struct vcache *avc); | |
486 | extern void afs_MarinerLogFetch(struct vcache *avc, | |
487 | afs_int32 off, | |
488 | afs_int32 bytes, | |
489 | afs_int32 idx); | |
490 | extern void afs_MarinerLog(char *astring, | |
491 | struct vcache *avc); | |
492 | extern void shutdown_mariner(void); | |
493 | ||
494 | /* afs_fetchstore.c */ | |
495 | extern int afs_CacheStoreVCache(struct dcache **dcList, struct vcache *avc, | |
496 | struct vrequest *areq, | |
497 | int sync, unsigned int minj, | |
498 | unsigned int high, unsigned int moredata, | |
499 | afs_hyper_t *anewDV, | |
500 | afs_size_t *amaxStoredLength); | |
501 | extern int afs_CacheFetchProc(struct afs_conn *tc, struct rx_connection *rxconn, | |
502 | struct osi_file *fP, | |
503 | afs_size_t abase, struct dcache *adc, | |
504 | struct vcache *avc, afs_int32 size, | |
505 | struct afs_FetchOutput *tsmall) | |
506 | AFS_NONNULL((5)); | |
507 | ||
508 | /* afs_memcache.c */ | |
509 | extern int afs_InitMemCache(int blkCount, int blkSize, int flags); | |
510 | extern int afs_MemCacheClose(struct osi_file *file); | |
511 | extern void *afs_MemCacheOpen(afs_dcache_id_t *ainode); | |
512 | extern int afs_MemReadBlk(struct osi_file *fP, int offset, | |
513 | void *dest, int size); | |
514 | extern int afs_MemReadvBlk(struct memCacheEntry *mceP, int offset, | |
515 | struct iovec *iov, int nio, int size); | |
516 | extern int afs_MemReadUIO(afs_dcache_id_t *ainode, struct uio *uioP); | |
517 | extern int afs_MemWriteBlk(struct osi_file *fP, int offset, | |
518 | void *src, int size); | |
519 | extern int afs_MemWritevBlk(struct memCacheEntry *mceP, int offset, | |
520 | struct iovec *iov, int nio, int size); | |
521 | extern int afs_MemWriteUIO(struct vcache *, afs_dcache_id_t *, struct uio *); | |
522 | extern int afs_MemCacheTruncate(struct osi_file *fP, | |
523 | int size); | |
524 | extern void shutdown_memcache(void); | |
525 | ||
526 | ||
527 | /* afs_nfsclnt.c */ | |
528 | extern struct afs_exporter *afs_nfsexported; | |
529 | extern struct afs_exporter *afs_nfsexporter; | |
530 | extern void afs_nfsclient_init(void); | |
531 | extern int afs_nfsclient_reqhandler(struct afs_exporter *exporter, | |
532 | afs_ucred_t **cred, | |
533 | afs_uint32 host, afs_int32 *pagparam, | |
534 | struct afs_exporter **outexporter); | |
535 | extern void shutdown_nfsclnt(void); | |
536 | ||
537 | /* afs_osi.c */ | |
538 | extern afs_lock_t afs_ftf; | |
539 | extern void afs_osi_Invisible(void); | |
540 | extern void afs_osi_Visible(void); | |
541 | extern void afs_osi_RxkRegister(void); | |
542 | extern void afs_osi_MaskSignals(void); | |
543 | extern void afs_osi_UnmaskRxkSignals(void); | |
544 | extern void afs_osi_MaskUserLoop(void); | |
545 | extern void osi_Init(void); | |
546 | extern void afs_osi_MaskSignals(void); | |
547 | extern void afs_osi_UnmaskRxkSignals(void); | |
548 | extern void afs_osi_RxkRegister(void); | |
549 | extern void afs_osi_Invisible(void); | |
550 | extern void shutdown_osi(void); | |
551 | extern void shutdown_osinet(void); | |
552 | extern void shutdown_osisleep(void); | |
553 | extern int afs_osi_suser(void *credp); | |
554 | extern void afs_osi_TraverseProcTable(void); | |
555 | #if defined(KERNEL) && !defined(UKERNEL) | |
556 | extern const afs_ucred_t *afs_osi_proc2cred(afs_proc_t * pr); | |
557 | #endif | |
558 | ||
559 | /* afs_osi_alloc.c */ | |
560 | #ifndef AFS_PRIVATE_OSI_ALLOCSPACES | |
561 | extern afs_lock_t osi_fsplock; | |
562 | extern afs_lock_t osi_flplock; | |
563 | #endif | |
564 | ||
565 | extern void *afs_osi_Alloc_debug(size_t x, char *func, int line); | |
566 | #ifndef afs_osi_Free | |
567 | extern void afs_osi_Free(void *x, size_t asize); | |
568 | #endif | |
569 | #if !defined(AFS_OBSD44_ENV) | |
570 | extern void afs_osi_FreeStr(char *x); | |
571 | #endif | |
572 | extern void osi_FreeLargeSpace(void *adata); | |
573 | extern void osi_FreeSmallSpace(void *adata); | |
574 | extern void *osi_AllocLargeSpace(size_t size); | |
575 | extern void *osi_AllocSmallSpace(size_t size); | |
576 | extern void shutdown_osinet(void); | |
577 | ||
578 | /* afs_osi_pag.c */ | |
579 | #if defined(AFS_SUN5_ENV) | |
580 | extern int afs_setpag(afs_ucred_t **credpp); | |
581 | #elif defined(AFS_FBSD_ENV) | |
582 | extern int afs_setpag(struct thread *td, void *args); | |
583 | #elif defined(AFS_NBSD_ENV) | |
584 | extern int afs_setpag(afs_proc_t *p, const void *args, register_t *retval); | |
585 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
586 | extern int afs_setpag(afs_proc_t *p, void *args, int *retval); | |
587 | #else | |
588 | extern int afs_setpag(void); | |
589 | #endif | |
590 | ||
591 | extern afs_uint32 genpag(void); | |
592 | extern afs_uint32 getpag(void); | |
593 | #if defined(AFS_FBSD_ENV) | |
594 | extern int AddPag(struct thread *td, afs_int32 aval, afs_ucred_t **credpp); | |
595 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
596 | extern int AddPag(afs_proc_t *p, afs_int32 aval, afs_ucred_t **credpp); | |
597 | #else | |
598 | extern int AddPag(afs_int32 aval, afs_ucred_t **credpp); | |
599 | #endif | |
600 | extern int afs_InitReq(struct vrequest *av, afs_ucred_t *acred); | |
601 | extern int afs_CreateReq(struct vrequest **avpp, afs_ucred_t *acred); | |
602 | extern void afs_DestroyReq(struct vrequest *av); | |
603 | extern afs_uint32 afs_get_pag_from_groups(gid_t g0a, gid_t g1a); | |
604 | extern void afs_get_groups_from_pag(afs_uint32 pag, gid_t * g0p, gid_t * g1p); | |
605 | extern afs_int32 PagInCred(afs_ucred_t *cred); | |
606 | ||
607 | /* afs_osi_uio.c */ | |
608 | #if !defined(AFS_DARWIN80_ENV) | |
609 | extern int afsio_copy(struct uio *ainuio, struct uio *aoutuio, | |
610 | struct iovec *aoutvec); | |
611 | extern int afsio_trim(struct uio *auio, afs_int32 asize); | |
612 | extern void afsio_free(struct uio *auio); | |
613 | #endif | |
614 | ||
615 | extern struct uio* afsio_partialcopy(struct uio *auio, size_t size); | |
616 | extern int afsio_skip(struct uio *auio, afs_int32 asize); | |
617 | ||
618 | /* afs_osi_vm.c */ | |
619 | extern int osi_Active(struct vcache *avc); | |
620 | extern void osi_FlushPages(struct vcache *avc, | |
621 | afs_ucred_t *credp); | |
622 | extern void osi_FlushText_really(struct vcache *vp); | |
623 | extern int osi_VMDirty_p(struct vcache *avc); | |
624 | #ifndef UKERNEL | |
625 | extern void osi_ReleaseVM(struct vcache *avc, afs_ucred_t *acred); | |
626 | #endif | |
627 | ||
628 | ||
629 | /* ARCH/osi_crypto.c */ | |
630 | extern int osi_readRandom(void *, afs_size_t); | |
631 | ||
632 | /* LINUX/osi_misc.c */ | |
633 | #ifdef AFS_LINUX20_ENV | |
634 | #ifdef AFS_LINUX24_ENV | |
635 | extern int osi_lookupname(char *aname, uio_seg_t seg, int followlink, | |
636 | struct dentry **dpp); | |
637 | extern int osi_InitCacheInfo(char *aname); | |
638 | extern int osi_rdwr(struct osi_file *osifile, struct uio *uiop, int rw); | |
639 | extern void setup_uio(struct uio *uiop, struct iovec *iovecp, const char *buf, | |
640 | afs_offs_t pos, int count, uio_flag_t flag, | |
641 | uio_seg_t seg); | |
642 | extern int uiomove(char *dp, int length, uio_flag_t rw, struct uio *uiop); | |
643 | extern void osi_linux_free_inode_pages(void); | |
644 | #endif | |
645 | extern void osi_linux_mask(void); | |
646 | extern void osi_linux_unmaskrxk(void); | |
647 | extern int setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag, | |
648 | int change_parent); | |
649 | #endif | |
650 | ||
651 | ||
652 | /* ARCH/osi_sleep.c */ | |
653 | extern void afs_osi_InitWaitHandle(struct afs_osi_WaitHandle *achandle); | |
654 | extern void afs_osi_CancelWait(struct afs_osi_WaitHandle *achandle); | |
655 | extern int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, | |
656 | int aintok); | |
657 | extern int afs_osi_TimedSleep(void *event, afs_int32 ams, int aintok); | |
658 | #ifndef afs_osi_Wakeup | |
659 | extern int afs_osi_Wakeup(void *event); | |
660 | #endif | |
661 | #ifndef afs_osi_Sleep | |
662 | extern void afs_osi_Sleep(void *event); | |
663 | #endif | |
664 | #ifndef afs_osi_SleepSig | |
665 | extern int afs_osi_SleepSig(void *event); | |
666 | #endif | |
667 | ||
668 | ||
669 | /* ARCH/osi_inode.c */ | |
670 | #ifdef AFS_SUN5_ENV | |
671 | extern int afs_syscall_icreate(dev_t, long, long, long, long, long, | |
672 | rval_t *, afs_ucred_t *); | |
673 | extern int afs_syscall_iopen(dev_t, int, int, rval_t *, afs_ucred_t *); | |
674 | extern int afs_syscall_iincdec(dev_t, int, int, int, rval_t *, | |
675 | afs_ucred_t *); | |
676 | #elif defined(AFS_SGI65_ENV) | |
677 | extern int afs_syscall_icreate(afs_uint32, afs_uint32, afs_uint32, afs_uint32, afs_uint32, afs_uint32, rval_t *); | |
678 | extern int afs_syscall_iopen(int, ino_t, int, rval_t *); | |
679 | extern int afs_syscall_iincdec(int, int, int, int); | |
680 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
681 | #if defined(AFS_NBSD_ENV) | |
682 | extern int afs_syscall_icreate(long, long, long, long, long, long, register_t *); | |
683 | extern int afs_syscall_iopen(int dev, int inode, int usrmod, register_t *); | |
684 | #else | |
685 | extern int afs_syscall_icreate(long, long, long, long, long, long, long*); | |
686 | extern int afs_syscall_iopen(int dev, int inode, int usrmod, long *retval); | |
687 | #endif | |
688 | extern int afs_syscall_iincdec(int dev, int inode, int inode_p1, int amount); | |
689 | #else | |
690 | extern int afs_syscall_icreate(long, long, long, long, long, long); | |
691 | extern int afs_syscall_iopen(int, int, int); | |
692 | extern int afs_syscall_iincdec(int, int, int, int); | |
693 | #endif | |
694 | ||
695 | /* ARCH/osi_file.c */ | |
696 | extern int afs_osicred_initialized; | |
697 | extern void *osi_UFSOpen(afs_dcache_id_t *ainode); | |
698 | #if defined(AFS_LINUX22_ENV) | |
699 | extern void osi_get_fh(struct dentry *dp, afs_ufs_dcache_id_t *ainode); | |
700 | #endif | |
701 | extern int afs_osi_Stat(struct osi_file *afile, | |
702 | struct osi_stat *astat); | |
703 | extern int osi_UFSClose(struct osi_file *afile); | |
704 | extern int osi_UFSTruncate(struct osi_file *afile, afs_int32 asize); | |
705 | extern void osi_DisableAtimes(struct vnode *avp); | |
706 | extern int afs_osi_Read(struct osi_file *afile, int offset, | |
707 | void *aptr, afs_int32 asize); | |
708 | extern int afs_osi_Write(struct osi_file *afile, afs_int32 offset, | |
709 | void *aptr, afs_int32 asize); | |
710 | extern int afs_osi_MapStrategy(int (*aproc) (struct buf * bp), | |
711 | struct buf *bp); | |
712 | extern void shutdown_osifile(void); | |
713 | ||
714 | ||
715 | /* ARCH/osi_groups.c */ | |
716 | #if defined(UKERNEL) | |
717 | extern int usr_setpag(afs_ucred_t **cred, afs_uint32 pagvalue, | |
718 | afs_uint32 * newpag, int change_parent); | |
719 | #else | |
720 | # if defined AFS_XBSD_ENV | |
721 | # if !defined(AFS_DFBSD_ENV) | |
722 | # if defined(AFS_FBSD_ENV) | |
723 | extern int setpag(struct thread *td, struct ucred **cred, afs_uint32 pagvalue, | |
724 | afs_uint32 * newpag, int change_parent); | |
725 | ||
726 | # elif defined(AFS_NBSD_ENV) | |
727 | extern int setpag(afs_proc_t *proc, afs_ucred_t **cred, afs_uint32 pagvalue, | |
728 | afs_uint32 * newpag, int change_parent); | |
729 | # else | |
730 | extern int setpag(afs_proc_t *proc, struct ucred **cred, afs_uint32 pagvalue, | |
731 | afs_uint32 * newpag, int change_parent); | |
732 | # endif /* AFS_FBSD_ENV */ | |
733 | # endif /* ! AFS_DFBSD_ENV */ | |
734 | # endif /* AFS_XBSD_ENV */ | |
735 | #endif /* UKERNEL */ | |
736 | ||
737 | #if defined(AFS_LINUX26_ENV) || defined(AFS_PAG_ONEGROUP_ENV) | |
738 | extern afs_int32 osi_get_group_pag(afs_ucred_t *cred); | |
739 | #endif | |
740 | ||
741 | ||
742 | ||
743 | /* ARCH/osi_vm.c */ | |
744 | extern int osi_VM_FlushVCache(struct vcache *avc); | |
745 | extern void osi_VM_StoreAllSegments(struct vcache *avc); | |
746 | extern void osi_VM_TryToSmush(struct vcache *avc, afs_ucred_t *acred, | |
747 | int sync); | |
748 | extern void osi_VM_FlushPages(struct vcache *avc, afs_ucred_t *credp); | |
749 | #if !defined(AFS_NBSD_ENV) | |
750 | extern void osi_VM_Truncate(struct vcache *avc, int alen, afs_ucred_t *acred); | |
751 | #else | |
752 | extern void osi_VM_Truncate(struct vcache *avc, voff_t alen, afs_ucred_t *acred); | |
753 | #endif | |
754 | extern void osi_VM_TryReclaim(struct vcache *avc, int *slept); | |
755 | extern void osi_VM_NukePages(struct vnode *vp, off_t offset, off_t size); | |
756 | extern int osi_VM_Setup(struct vcache *avc, int force); | |
757 | ||
758 | #ifdef AFS_SUN5_ENV | |
759 | extern int osi_VM_GetDownD(struct vcache *avc, struct dcache *adc); | |
760 | extern int osi_VM_MultiPageConflict(struct vcache *avc, struct dcache *adc); | |
761 | extern void osi_VM_PreTruncate(struct vcache *avc, int alen, | |
762 | afs_ucred_t *acred); | |
763 | #endif | |
764 | ||
765 | ||
766 | /* ARCH/osi_vnodeops.c */ | |
767 | extern struct vnodeops Afs_vnodeops; | |
768 | extern int afs_inactive(struct vcache *avc, afs_ucred_t *acred); | |
769 | ||
770 | /* afs_osifile.c */ | |
771 | ||
772 | /* afs_osi_pag.c */ | |
773 | extern afs_uint32 pag_epoch; | |
774 | extern afs_uint32 pagCounter; | |
775 | ||
776 | /* OS/osi_vfsops.c */ | |
777 | #if defined(AFS_XBSD_ENV) || defined(AFS_DARWIN_ENV) | |
778 | extern struct mount *afs_globalVFS; | |
779 | #else | |
780 | extern struct vfs *afs_globalVFS; | |
781 | #endif | |
782 | extern struct vcache *afs_globalVp; | |
783 | #ifdef AFS_LINUX20_ENV | |
784 | extern void vcache2inode(struct vcache *avc); | |
785 | extern void vcache2fakeinode(struct vcache *rootvp, struct vcache *mpvp); | |
786 | #endif | |
787 | ||
788 | #ifdef UKERNEL | |
789 | extern int afs_mount(struct vfs *afsp, char *path, void *data); | |
790 | extern int afs_root(OSI_VFS_DECL(afsp), struct vnode **avpp); | |
791 | extern int afs_unmount(struct vfs *afsp); | |
792 | #endif | |
793 | ||
794 | /* afs_pag_call.c */ | |
795 | extern afs_int32 afs_nfs_server_addr; | |
796 | extern void afspag_Init(afs_int32 nfs_server_addr); | |
797 | extern void afspag_Shutdown(void); | |
798 | ||
799 | /* afs_pag_cred.c */ | |
800 | extern afs_rwlock_t afs_xpagcell; | |
801 | extern afs_rwlock_t afs_xpagsys; | |
802 | extern int afspag_PUnlog(char *ain, afs_int32 ainSize, | |
803 | afs_ucred_t **acred); | |
804 | extern int afspag_PSetTokens(char *ain, afs_int32 ainSize, | |
805 | afs_ucred_t **acred); | |
806 | extern int afspag_PSetSysName(char *ain, afs_int32 ainSize, | |
807 | afs_ucred_t **acred); | |
808 | ||
809 | /* afs_pioctl.c */ | |
810 | extern struct VenusFid afs_rootFid; | |
811 | extern afs_int32 afs_waitForever; | |
812 | extern short afs_waitForeverCount; | |
813 | extern afs_int32 afs_showflags; | |
814 | extern int afs_defaultAsynchrony; | |
815 | #if defined(AFS_DARWIN100_ENV) | |
816 | extern int afs_syscall64_pioctl(user_addr_t path, unsigned int com, | |
817 | user_addr_t cmarg, int follow, \ | |
818 | afs_ucred_t *credp); | |
819 | #endif | |
820 | #ifdef AFS_SUN5_ENV | |
821 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, | |
822 | int follow, rval_t *rvp, afs_ucred_t *credp); | |
823 | #elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
824 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, | |
825 | int follow, afs_ucred_t *credp); | |
826 | #else | |
827 | extern int afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, | |
828 | int follow); | |
829 | #endif | |
830 | extern int HandleIoctl(struct vcache *avc, afs_int32 acom, | |
831 | struct afs_ioctl *adata); | |
832 | ||
833 | ||
834 | /* afs_segments.c */ | |
835 | extern int afs_StoreAllSegments(struct vcache *avc, | |
836 | struct vrequest *areq, int sync); | |
837 | extern int afs_InvalidateAllSegments(struct vcache *avc); | |
838 | extern int afs_ExtendSegments(struct vcache *avc, | |
839 | afs_size_t alen, struct vrequest *areq); | |
840 | extern int afs_TruncateAllSegments(struct vcache *avc, | |
841 | afs_size_t alen, struct vrequest *areq, | |
842 | afs_ucred_t *acred); | |
843 | ||
844 | /* afs_server.c */ | |
845 | extern afs_rwlock_t afs_xsrvAddr; | |
846 | extern afs_rwlock_t afs_xserver; | |
847 | extern afs_rwlock_t afs_icl_lock; | |
848 | extern struct srvAddr *afs_srvAddrs[NSERVERS]; | |
849 | extern struct server *afs_servers[NSERVERS]; | |
850 | extern int afs_totalServers; | |
851 | extern struct server *afs_FindServer(afs_int32 aserver, afs_uint16 aport, | |
852 | afsUUID * uuidp, afs_int32 locktype); | |
853 | extern struct server *afs_GetServer(afs_uint32 * aserver, afs_int32 nservers, | |
854 | afs_int32 acell, u_short aport, | |
855 | afs_int32 locktype, afsUUID * uuidp, | |
856 | afs_int32 addr_uniquifier, | |
857 | struct volume *tv); | |
858 | extern void afs_GetCapabilities(struct server *ts); | |
859 | extern void ForceAllNewConnections(void); | |
860 | extern void afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown); | |
861 | extern afs_int32 afs_ServerDown(struct srvAddr *sa, int code, | |
862 | struct rx_connection *rxconn); | |
863 | extern void afs_CountServers(void); | |
864 | extern void afs_CheckServers(int adown, struct cell *acellp); | |
865 | extern void afs_LoopServers(int adown, struct cell *acellp, int vlalso, | |
866 | void (*func1) (int nconns, struct rx_connection **rxconns, | |
867 | struct afs_conn **conns), | |
868 | void (*func2) (int nconns, struct rx_connection **rxconns, | |
869 | struct afs_conn **conns)); | |
870 | extern unsigned int afs_random(void); | |
871 | extern int afs_randomMod15(void); | |
872 | extern int afs_randomMod127(void); | |
873 | extern void afs_SortOneServer(struct server *asp); | |
874 | extern void afs_SortServers(struct server *aservers[], int count); | |
875 | extern void afs_ActivateServer(struct srvAddr *sap); | |
876 | #ifdef AFS_USERSPACE_IP_ADDR | |
877 | extern void afsi_SetServerIPRank(struct srvAddr *sa, afs_int32 addr, | |
878 | afs_uint32 subnetmask); | |
879 | #else | |
880 | #if (!defined(AFS_SUN5_ENV)) && defined(USEIFADDR) | |
881 | void afsi_SetServerIPRank(struct srvAddr *sa, struct in_ifaddr *ifa); | |
882 | #endif | |
883 | #endif | |
884 | extern int afs_HaveCallBacksFrom(struct server *aserver); | |
885 | extern void afs_RemoveAllConns(void); | |
886 | extern void afs_MarkAllServersUp(void); | |
887 | ||
888 | /* afs_osidnlc.c */ | |
889 | extern int osi_dnlc_enter(struct vcache *adp, char *aname, struct vcache *avc, | |
890 | afs_hyper_t * avno); | |
891 | extern struct vcache *osi_dnlc_lookup(struct vcache *adp, char *aname, | |
892 | int locktype); | |
893 | extern int osi_dnlc_remove(struct vcache *adp, char *aname, | |
894 | struct vcache *avc); | |
895 | extern int osi_dnlc_purgedp(struct vcache *adp); | |
896 | extern int osi_dnlc_purgevp(struct vcache *avc); | |
897 | extern int osi_dnlc_purge(void); | |
898 | extern int osi_dnlc_purgevol(struct VenusFid *fidp); | |
899 | extern int osi_dnlc_init(void); | |
900 | extern int osi_dnlc_shutdown(void); | |
901 | ||
902 | /* afs_pag_cred.c */ | |
903 | extern void afspag_SetPrimaryCell(char *acell); | |
904 | ||
905 | /* afs_stat.c */ | |
906 | extern struct afs_CMStats afs_cmstats; | |
907 | extern struct afs_stats_CMPerf afs_stats_cmperf; | |
908 | extern struct afs_stats_CMFullPerf afs_stats_cmfullperf; | |
909 | extern afs_int32 afs_stats_XferSumBytes[AFS_STATS_NUM_FS_XFER_OPS]; | |
910 | extern void afs_InitStats(void); | |
911 | extern void afs_GetCMStat(char **ptr, unsigned *size); | |
912 | #ifndef AFS_NOSTATS | |
913 | extern void afs_AddToMean(struct afs_MeanStats *oldMean, afs_int32 newValue); | |
914 | #endif | |
915 | ||
916 | /* afs_syscall.c */ | |
917 | #ifdef AFS_DARWIN100_ENV | |
918 | extern int copyin_afs_ioctl(user_addr_t cmarg, struct afs_ioctl *dst); | |
919 | #else | |
920 | extern int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst); | |
921 | #endif | |
922 | ||
923 | #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
924 | #ifdef AFS_DARWIN100_ENV | |
925 | extern int afs3_syscall(afs_proc_t *p, void *args, unsigned int *retval); | |
926 | #elif (defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV)) && (__FreeBSD_version < 900044) | |
927 | /* afs3_syscall prototype is in sys/sysproto.h | |
928 | Yes, they put it in, then took it out again (renamed with a sys_ prefix) */ | |
929 | #elif defined(AFS_FBSD_ENV) | |
930 | extern int afs3_syscall(struct thread *p, void *args); | |
931 | #elif defined(AFS_NBSD50_ENV) | |
932 | extern int afs3_syscall(afs_proc_t *p, const void *args, register_t *retval); | |
933 | #elif defined(AFS_NBSD40_ENV) | |
934 | extern int afs3_syscall(struct lwp *p, void *args); | |
935 | #else | |
936 | extern int afs3_syscall(afs_proc_t *p, void *args, long *retval); | |
937 | #endif | |
938 | #endif | |
939 | ||
940 | #ifdef UKERNEL | |
941 | extern int Afs_syscall(void); | |
942 | #endif | |
943 | ||
944 | /* afs_tokens.c */ | |
945 | struct ktc_tokenUnion; | |
946 | struct ktc_setTokenData; | |
947 | ||
948 | extern union tokenUnion *afs_FindToken(struct tokenJar *, rx_securityIndex); | |
949 | extern void afs_FreeTokens(struct tokenJar **); | |
950 | extern union tokenUnion *afs_AddToken(struct tokenJar **, rx_securityIndex); | |
951 | extern void afs_DiscardExpiredTokens(struct tokenJar **, afs_int32); | |
952 | extern int afs_HasValidTokens(struct tokenJar *, afs_int32); | |
953 | extern int afs_HasUsableTokens(struct tokenJar *, afs_int32); | |
954 | extern void afs_AddRxkadToken(struct tokenJar **, char *, int, | |
955 | struct ClearToken *); | |
956 | extern int afs_AddTokenFromPioctl(struct tokenJar **, struct ktc_tokenUnion *); | |
957 | extern int afs_ExtractTokensForPioctl(struct tokenJar *, time_t, | |
958 | struct ktc_setTokenData *); | |
959 | ||
960 | /* UKERNEL/afs_usrops.c */ | |
961 | #ifdef UKERNEL | |
962 | extern void uafs_Shutdown(void); | |
963 | extern void osi_ReleaseVM(struct vcache *avc, int len, | |
964 | afs_ucred_t *credp); | |
965 | extern int osi_GetTime(struct timeval *tv); | |
966 | extern int iodone(struct usr_buf *bp); | |
967 | extern int usr_ioctl(void); | |
968 | extern int lookupname(char *fnamep, int segflg, int followlink, | |
969 | struct usr_vnode **compvpp); | |
970 | extern int usr_uiomove(char *kbuf, int n, int rw, struct usr_uio *uio); | |
971 | extern int afs_osi_VOP_RDWR(struct usr_vnode *vnodeP, struct usr_uio *uioP, | |
972 | int rw, int flags, afs_ucred_t *credP); | |
973 | ||
974 | #endif | |
975 | ||
976 | /* afs_user.c */ | |
977 | extern afs_rwlock_t afs_xuser; | |
978 | extern struct unixuser *afs_users[NUSERS]; | |
979 | extern struct unixuser *afs_FindUser(afs_int32 auid, afs_int32 acell, | |
980 | afs_int32 locktype); | |
981 | extern struct unixuser *afs_GetUser(afs_int32 auid, afs_int32 acell, | |
982 | afs_int32 locktype); | |
983 | extern void afs_LockUser(struct unixuser *au, afs_int32 locktype, | |
984 | unsigned int src_indicator); | |
985 | extern void afs_NotifyUser(struct unixuser *auser, int event); | |
986 | ||
987 | #if AFS_GCPAGS | |
988 | extern afs_int32 afs_GCPAGs(afs_int32 * ReleasedCount); | |
989 | extern void afs_GCPAGs_perproc_func(afs_proc_t * pproc); | |
990 | #endif /* AFS_GCPAGS */ | |
991 | extern void afs_ComputePAGStats(void); | |
992 | extern void afs_PutUser(struct unixuser *au, afs_int32 locktype); | |
993 | extern void afs_GCUserData(void); | |
994 | extern void afs_CheckTokenCache(void); | |
995 | extern void afs_ResetAccessCache(afs_int32 uid, afs_int32 cell, int alock); | |
996 | extern void afs_ResetUserConns(struct unixuser *auser); | |
997 | extern void afs_SetPrimary(struct unixuser *au, int aflag); | |
998 | extern void afs_MarkUserExpired(afs_int32 pag); | |
999 | ||
1000 | /* afs_util.c */ | |
1001 | extern afs_int32 afs_strtoi_r(const char *str, char **endptr, afs_uint32 *ret); | |
1002 | extern afs_int32 afs_calc_inum(afs_int32 cell, afs_int32 volume, | |
1003 | afs_int32 vnode); | |
1004 | #ifndef afs_cv2string | |
1005 | extern char *afs_cv2string(char *ttp, afs_uint32 aval); | |
1006 | #endif | |
1007 | #ifndef afs_strcasecmp | |
1008 | extern int afs_strcasecmp(const char *s1, const char *s2); | |
1009 | #endif | |
1010 | #ifndef afs_strcat | |
1011 | extern char *afs_strcat(char *s1, char *s2); | |
1012 | #endif | |
1013 | #ifdef AFS_OBSD34_ENV | |
1014 | extern char *afs_strcpy(char *s1, char *s2); | |
1015 | #endif | |
1016 | #ifndef afs_strchr | |
1017 | extern char *afs_strchr(char *s, int c); | |
1018 | #endif | |
1019 | #ifndef afs_strrchr | |
1020 | extern char *afs_strrchr(char *s, int c); | |
1021 | #endif | |
1022 | extern char *afs_strdup(char *s); | |
1023 | extern void print_internet_address(char *preamble, struct srvAddr *sa, | |
1024 | char *postamble, int flag, int code, | |
1025 | struct rx_connection *rxconn); | |
1026 | extern afs_int32 afs_data_pointer_to_int32(const void *p); | |
1027 | ||
1028 | extern void afs_CheckLocks(void); | |
1029 | extern int afs_badop(void); | |
1030 | extern int afs_noop(void); | |
1031 | extern afs_int32 afs_data_pointer_to_int32(const void *p); | |
1032 | ||
1033 | /* afs_warn.c */ | |
1034 | ||
1035 | #ifdef AFS_AIX_ENV | |
1036 | /* AIX doesn't have usable va_args support in its kernel */ | |
1037 | extern void afs_warn(); | |
1038 | extern void afs_warnuser(); | |
1039 | extern void afs_warnall(); | |
1040 | #else | |
1041 | extern void afs_warn(char *fmt, ...) | |
1042 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); | |
1043 | extern void afs_warnuser(char *fmt, ...) | |
1044 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); | |
1045 | extern void afs_warnall(char *fmt, ...) | |
1046 | AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); | |
1047 | #endif | |
1048 | extern void afs_WarnENOSPC(void); | |
1049 | ||
1050 | /* afs_vcache.c */ | |
1051 | extern int VCHash(struct VenusFid *fid); | |
1052 | extern int VCHashV(struct VenusFid *fid); | |
1053 | extern int afs_ShakeLooseVCaches(afs_int32 anumber); | |
1054 | extern afs_int32 afs_maxvcount; | |
1055 | extern afs_int32 afs_vcount; | |
1056 | extern int afsvnumbers; | |
1057 | extern afs_rwlock_t afs_xvreclaim; | |
1058 | extern afs_rwlock_t afs_xvcache; | |
1059 | extern afs_rwlock_t afs_xvcdirty; | |
1060 | extern afs_lock_t afs_xvcb; | |
1061 | extern struct afs_q VLRU; | |
1062 | extern afs_int32 vcachegen; | |
1063 | extern unsigned int afs_paniconwarn; | |
1064 | extern struct afs_q afs_vhashTV[VCSIZE]; | |
1065 | extern afs_int32 afs_bulkStatsLost; | |
1066 | extern int afs_norefpanic; | |
1067 | extern struct vcache *ReclaimedVCList; | |
1068 | extern ino_t vcacheMetaInode; | |
1069 | extern struct osi_file *afs_vcacheMetaInodep; | |
1070 | ||
1071 | extern void afs_FlushReclaimedVcaches(void); | |
1072 | void afs_vcacheInit(int astatSize); | |
1073 | extern struct vcache *afs_FindVCache(struct VenusFid *afid, afs_int32 * retry, | |
1074 | afs_int32 flag); | |
1075 | extern void afs_BadFetchStatus(struct afs_conn *tc); | |
1076 | extern int afs_CheckFetchStatus(struct afs_conn *tc, | |
1077 | struct AFSFetchStatus *status); | |
1078 | extern afs_int32 afs_FetchStatus(struct vcache *avc, struct VenusFid *afid, | |
1079 | struct vrequest *areq, | |
1080 | struct AFSFetchStatus *Outsp); | |
1081 | ||
1082 | extern afs_int32 afs_FlushVCBs(afs_int32 lockit); | |
1083 | extern void afs_InactiveVCache(struct vcache *avc, afs_ucred_t *acred); | |
1084 | extern struct vcache *afs_LookupVCache(struct VenusFid *afid, | |
1085 | struct vrequest *areq, | |
1086 | afs_int32 * cached, struct vcache *adp, | |
1087 | char *aname); | |
1088 | extern void afs_FlushAllVCaches(void); | |
1089 | extern int afs_FlushVCache(struct vcache *avc, int *slept); | |
1090 | extern struct vcache *afs_GetRootVCache(struct VenusFid *afid, | |
1091 | struct vrequest *areq, | |
1092 | afs_int32 * cached, | |
1093 | struct volume *tvolp); | |
1094 | extern struct vcache *afs_NewVCache(struct VenusFid *afid, | |
1095 | struct server *serverp); | |
1096 | extern struct vcache *afs_NewBulkVCache(struct VenusFid *afid, | |
1097 | struct server *serverp, int seq); | |
1098 | extern int afs_VerifyVCache2(struct vcache *avc, struct vrequest *areq); | |
1099 | extern struct vcache *afs_GetVCache(struct VenusFid *afid, | |
1100 | struct vrequest *areq, afs_int32 * cached, | |
1101 | struct vcache *avc); | |
1102 | extern void afs_PutVCache(struct vcache *avc); | |
1103 | extern int afs_RefVCache(struct vcache *avc); | |
1104 | ||
1105 | /* Flags for afs_StaleVCacheFlags */ | |
1106 | ||
1107 | /* afs_xcbhash is already locked by the caller */ | |
1108 | #define AFS_STALEVC_CBLOCKED (0x01) | |
1109 | ||
1110 | /* Normally we assume we only need to invalidate cached | |
1111 | * name -> vcache mappings for entries where the given | |
1112 | * vcache is the parent dir. This flag says to also clear | |
1113 | * entries for the vcache itself. */ | |
1114 | #define AFS_STALEVC_FILENAME (0x02) | |
1115 | ||
1116 | /* Do not touch the DNLC; the caller will deal with it. */ | |
1117 | #define AFS_STALEVC_NODNLC (0x04) | |
1118 | ||
1119 | /* Do not run afs_DequeueCallback; the caller will take | |
1120 | * care of callback management. */ | |
1121 | #define AFS_STALEVC_NOCB (0x08) | |
1122 | ||
1123 | /* NULL-out the callback field of the vcache, to save code at the callsite. */ | |
1124 | #define AFS_STALEVC_CLEARCB (0x10) | |
1125 | ||
1126 | /* Skip the DNLC purge if CVInit or CVFlushed is set, for efficiency. | |
1127 | * A transitional flag used to reduce the logic change during refactoring | |
1128 | * that is expected to be removed and the purge behavior standardized. */ | |
1129 | #define AFS_STALEVC_SKIP_DNLC_FOR_INIT_FLUSHED (0x20) | |
1130 | typedef unsigned int afs_stalevc_flags_t; | |
1131 | ||
1132 | #define afs_StaleVCache(avc) afs_StaleVCacheFlags(avc, 0, 0) | |
1133 | extern void afs_StaleVCacheFlags(struct vcache *avc, afs_stalevc_flags_t flags, | |
1134 | afs_uint32 cflags); | |
1135 | ||
1136 | extern void afs_SetDataVersion(struct vcache *avc, afs_hyper_t *avers); | |
1137 | ||
1138 | extern void afs_ProcessFS(struct vcache *avc, | |
1139 | struct AFSFetchStatus *astat, | |
1140 | struct vrequest *areq); | |
1141 | extern struct afs_cbr *afs_AllocCBR(void); | |
1142 | extern int afs_FreeCBR(struct afs_cbr *asp); | |
1143 | extern void afs_RemoveVCB(struct VenusFid *afid); | |
1144 | extern void afs_FlushActiveVcaches(afs_int32 doflocks); | |
1145 | extern int afs_WriteVCache(struct vcache *avc, | |
1146 | struct AFSStoreStatus *astatus, | |
1147 | struct vrequest *areq); | |
1148 | extern int afs_RemoteLookup(struct VenusFid *afid, | |
1149 | struct vrequest *areq, char *name, | |
1150 | struct VenusFid *nfid, | |
1151 | struct AFSFetchStatus *OutStatusp, | |
1152 | struct AFSCallBack *CallBackp, | |
1153 | struct server **serverp, | |
1154 | struct AFSVolSync *tsyncp); | |
1155 | extern void afs_ResetVCache(struct vcache *, afs_ucred_t *, afs_int32 skipdnlc); | |
1156 | extern afs_int32 afs_NFSFindVCache(struct vcache **avcp, | |
1157 | struct VenusFid *afid); | |
1158 | extern void afs_vcacheInit(int astatSize); | |
1159 | extern void shutdown_vcache(void); | |
1160 | extern void afs_DisconGiveUpCallbacks(void); | |
1161 | extern void afs_ClearAllStatdFlag(void); | |
1162 | ||
1163 | /* VNOPS/afs_vnop_access.c */ | |
1164 | extern afs_int32 afs_GetAccessBits(struct vcache *avc, | |
1165 | afs_int32 arights, | |
1166 | struct vrequest *areq); | |
1167 | extern int afs_AccessOK(struct vcache *avc, afs_int32 arights, | |
1168 | struct vrequest *areq, afs_int32 check_mode_bits); | |
1169 | #if defined(AFS_SUN5_ENV) || (defined(AFS_SGI_ENV) && !defined(AFS_SGI65_ENV)) | |
1170 | extern int afs_access(OSI_VC_DECL(avc), afs_int32 amode, int flags, | |
1171 | afs_ucred_t *acred); | |
1172 | #else | |
1173 | extern int afs_access(OSI_VC_DECL(avc), afs_int32 amode, | |
1174 | afs_ucred_t *acred); | |
1175 | #endif | |
1176 | extern int afs_getRights(OSI_VC_DECL(avc), afs_int32 arights, | |
1177 | afs_ucred_t *acred); | |
1178 | ||
1179 | /* VNOPS/afs_vnop_attrs.c */ | |
1180 | extern int afs_CopyOutAttrs(struct vcache *avc, | |
1181 | struct vattr *attrs); | |
1182 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) | |
1183 | extern int afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, int flags, | |
1184 | afs_ucred_t *acred); | |
1185 | #else | |
1186 | extern int afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, | |
1187 | afs_ucred_t *acred); | |
1188 | #endif | |
1189 | extern int afs_VAttrToAS(struct vcache *avc, | |
1190 | struct vattr *av, | |
1191 | struct AFSStoreStatus *as); | |
1192 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) | |
1193 | extern int afs_setattr(OSI_VC_DECL(avc), struct vattr *attrs, | |
1194 | int flags, afs_ucred_t *acred); | |
1195 | #else | |
1196 | extern int afs_setattr(OSI_VC_DECL(avc), struct vattr *attrs, | |
1197 | afs_ucred_t *acred); | |
1198 | #endif | |
1199 | extern int afs_CreateAttr(struct vattr **out); | |
1200 | extern void afs_DestroyAttr(struct vattr *vattr); | |
1201 | ||
1202 | /* VNOPS/afs_vnop_create.c */ | |
1203 | #ifdef AFS_SGI64_ENV | |
1204 | extern int afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, | |
1205 | int flags, int amode, struct vcache **avcp, | |
1206 | afs_ucred_t *acred); | |
1207 | #else /* AFS_SGI64_ENV */ | |
1208 | extern int afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, | |
1209 | enum vcexcl aexcl, int amode, struct vcache **avcp, | |
1210 | afs_ucred_t *acred); | |
1211 | #endif /* AFS_SGI64_ENV */ | |
1212 | extern int afs_LocalHero(struct vcache *avc, | |
1213 | struct dcache *adc, | |
1214 | AFSFetchStatus * astat, int aincr); | |
1215 | ||
1216 | /* VNOPS/afs_vnop_dirops.c */ | |
1217 | ||
1218 | extern int afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, | |
1219 | struct vcache **avcp, afs_ucred_t *acred); | |
1220 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) | |
1221 | extern int afs_rmdir(OSI_VC_DECL(adp), char *aname, struct vnode *cdirp, | |
1222 | afs_ucred_t *acred); | |
1223 | #else | |
1224 | extern int afs_rmdir(OSI_VC_DECL(adp), char *aname, afs_ucred_t *acred); | |
1225 | #endif | |
1226 | ||
1227 | struct fid; | |
1228 | /* VNOPS/afs_vnop_fid.c */ | |
1229 | #ifdef AFS_AIX41_ENV | |
1230 | int afs_fid(OSI_VC_DECL(avc), struct fid *fidpp, struct ucred *credp); | |
1231 | #elif defined(AFS_SUN5_ENV) | |
1232 | int afs_fid(OSI_VC_DECL(avc), struct fid *fidpp); | |
1233 | #else | |
1234 | int afs_fid(OSI_VC_DECL(avc), struct fid **fidpp); | |
1235 | #endif /* AFS_AIX41_ENV */ | |
1236 | ||
1237 | /* VNOPS/afs_vnop_flock.c */ | |
1238 | extern void lockIdSet(struct AFS_FLOCK *flock, struct SimpleLocks *slp, | |
1239 | int clid); | |
1240 | extern int HandleFlock(struct vcache *avc, int acom, | |
1241 | struct vrequest *areq, pid_t clid, int onlymine); | |
1242 | ||
1243 | #if defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
1244 | extern int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, | |
1245 | afs_ucred_t * acred, pid_t clid); | |
1246 | #else | |
1247 | extern int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, | |
1248 | afs_ucred_t * acred); | |
1249 | #endif | |
1250 | ||
1251 | /* VNOPS/afs_vnop_link.c */ | |
1252 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) | |
1253 | extern int afs_link(OSI_VC_DECL(adp), struct vcache *avc, char *aname, | |
1254 | afs_ucred_t *acred); | |
1255 | #else | |
1256 | extern int afs_link(struct vcache *avc, OSI_VC_DECL(adp), char *aname, | |
1257 | afs_ucred_t *acred); | |
1258 | #endif | |
1259 | ||
1260 | /* VNOPS/afs_vnop_lookup.c */ | |
1261 | extern int EvalMountPoint(struct vcache *avc, struct vcache *advc, | |
1262 | struct volume **avolpp, | |
1263 | struct vrequest *areq); | |
1264 | extern void afs_InitFakeStat(struct afs_fakestat_state *state); | |
1265 | extern int afs_EvalFakeStat(struct vcache **avcp, | |
1266 | struct afs_fakestat_state *state, | |
1267 | struct vrequest *areq); | |
1268 | extern int afs_TryEvalFakeStat(struct vcache **avcp, | |
1269 | struct afs_fakestat_state *state, | |
1270 | struct vrequest *areq); | |
1271 | extern void afs_PutFakeStat(struct afs_fakestat_state *state); | |
1272 | extern int afs_ENameOK(char *aname); | |
1273 | extern void Check_AtSys(struct vcache *avc, const char *aname, | |
1274 | struct sysname_info *state, struct vrequest *areq); | |
1275 | extern int Next_AtSys(struct vcache *avc, struct vrequest *areq, | |
1276 | struct sysname_info *state); | |
1277 | extern int afs_DoBulkStat(struct vcache *adp, long dirCookie, | |
1278 | struct vrequest *areqp); | |
1279 | ||
1280 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) | |
1281 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, | |
1282 | struct pathname *pnp, int flags, struct vnode *rdir, | |
1283 | afs_ucred_t *acred); | |
1284 | #elif defined(UKERNEL) | |
1285 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, | |
1286 | afs_ucred_t *acred, int flags); | |
1287 | #else | |
1288 | extern int afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, | |
1289 | afs_ucred_t *acred); | |
1290 | #endif | |
1291 | ||
1292 | /* VNOPS/afs_vnop_open.c */ | |
1293 | #ifdef AFS_SGI64_ENV | |
1294 | extern int afs_open(bhv_desc_t * bhv, struct vcache **avcp, afs_int32 aflags, | |
1295 | afs_ucred_t *acred); | |
1296 | #else | |
1297 | extern int afs_open(struct vcache **avcp, afs_int32 aflags, | |
1298 | afs_ucred_t *acred); | |
1299 | #endif | |
1300 | ||
1301 | ||
1302 | /* VNOPS/afs_vnop_read.c */ | |
1303 | extern int afs_read(struct vcache *avc, struct uio *auio, | |
1304 | afs_ucred_t *acred, int noLock); | |
1305 | ||
1306 | extern int afs_UFSReadUIO(afs_dcache_id_t *cacheId, struct uio *tuiop); | |
1307 | ||
1308 | extern void afs_PrefetchChunk(struct vcache *avc, struct dcache *adc, | |
1309 | afs_ucred_t *acred, struct vrequest *areq); | |
1310 | ||
1311 | ||
1312 | /* VNOPS/afs_vnop_readdir.c */ | |
1313 | extern int afs_rd_stash_i; | |
1314 | #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
1315 | extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, | |
1316 | afs_ucred_t *acred, int *eofp); | |
1317 | #elif defined(AFS_HPUX100_ENV) | |
1318 | extern int afs_readdir2(OSI_VC_DECL(avc), struct uio *auio, | |
1319 | afs_ucred_t *acred); | |
1320 | #else | |
1321 | extern int afs_readdir(OSI_VC_DECL(avc), struct uio *auio, | |
1322 | afs_ucred_t *acred); | |
1323 | #endif | |
1324 | ||
1325 | /* VNOPS/afs_vnop_remove.c */ | |
1326 | extern int afsremove(struct vcache *adp, struct dcache *tdc, | |
1327 | struct vcache *tvc, char *aname, | |
1328 | afs_ucred_t *acred, struct vrequest *treqp); | |
1329 | extern int afs_remunlink(struct vcache *avc, int doit); | |
1330 | extern int afs_remove(OSI_VC_DECL(adp), char *aname, afs_ucred_t *acred); | |
1331 | extern char *afs_newname(void); | |
1332 | ||
1333 | /* VNOPS/afs_vnop_rename.c */ | |
1334 | extern int afsrename(struct vcache *aodp, char *aname1, struct vcache *andp, | |
1335 | char *aname2, afs_ucred_t *acred, | |
1336 | struct vrequest *areq); | |
1337 | #ifdef AFS_SGI_ENV | |
1338 | extern int afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, | |
1339 | char *aname2, struct pathname *npnp, | |
1340 | afs_ucred_t *acred); | |
1341 | #else | |
1342 | extern int afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, | |
1343 | char *aname2, afs_ucred_t *acred); | |
1344 | #endif | |
1345 | ||
1346 | /* VNOPS/afs_vnop_strategy.c */ | |
1347 | #if defined(AFS_SUN5_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) | |
1348 | extern int afs_ustrategy(struct buf *adp, afs_ucred_t *credp); | |
1349 | #else | |
1350 | extern int afs_ustrategy(struct buf *adp); | |
1351 | #endif | |
1352 | ||
1353 | /* VNOPS/afs_vnop_symlink.c */ | |
1354 | extern int afs_MemHandleLink(struct vcache *avc, | |
1355 | struct vrequest *areq); | |
1356 | extern int afs_UFSHandleLink(struct vcache *avc, | |
1357 | struct vrequest *areq); | |
1358 | extern int afs_symlink(OSI_VC_DECL(adp), char *aname, | |
1359 | struct vattr *attrs, char *atargetName, | |
1360 | struct vcache **tvcp, afs_ucred_t *acred); | |
1361 | extern int afs_readlink(OSI_VC_DECL(avc), struct uio *auio, | |
1362 | afs_ucred_t *acred); | |
1363 | ||
1364 | /* VNOPS/afs_vnop_write.c */ | |
1365 | extern int afs_write(struct vcache *avc, struct uio *auio, int aio, | |
1366 | afs_ucred_t *acred, int noLock); | |
1367 | ||
1368 | extern int afs_UFSWriteUIO(struct vcache *, afs_dcache_id_t *, struct uio *); | |
1369 | ||
1370 | extern int afs_StoreOnLastReference(struct vcache *avc, | |
1371 | struct vrequest *treq); | |
1372 | extern int afs_DoPartialWrite(struct vcache *avc, | |
1373 | struct vrequest *areq); | |
1374 | extern int afs_closex(struct file *afd); | |
1375 | ||
1376 | #ifdef AFS_SGI65_ENV | |
1377 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, | |
1378 | lastclose_t lastclose, afs_ucred_t *acred); | |
1379 | #elif defined(AFS_SGI64_ENV) | |
1380 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, | |
1381 | lastclose_t lastclose, off_t offset, | |
1382 | afs_ucred_t *acred, struct flid *flp); | |
1383 | #elif defined(AFS_SGI_ENV) | |
1384 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, | |
1385 | lastclose_t lastclose, off_t offset, | |
1386 | afs_ucred_t *acred); | |
1387 | #elif defined(AFS_SUN5_ENV) | |
1388 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, int count, | |
1389 | offset_t offset, afs_ucred_t *acred); | |
1390 | #else | |
1391 | extern int afs_close(OSI_VC_DECL(avc), afs_int32 aflags, | |
1392 | afs_ucred_t *acred); | |
1393 | #endif | |
1394 | ||
1395 | #if defined(AFS_SGI65_ENV) | |
1396 | extern int afs_fsync(OSI_VC_DECL(avc), int flags, afs_ucred_t *acred, | |
1397 | off_t start, off_t stop); | |
1398 | #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) | |
1399 | extern int afs_fsync(OSI_VC_DECL(avc), int flag, afs_ucred_t *acred); | |
1400 | #else | |
1401 | extern int afs_fsync(OSI_VC_DECL(avc), afs_ucred_t *acred); | |
1402 | #endif | |
1403 | ||
1404 | ||
1405 | /* afs_volume.c */ | |
1406 | extern afs_int32 afs_FVIndex; | |
1407 | extern afs_int32 afs_volCounter; | |
1408 | extern afs_rwlock_t afs_xvolume; | |
1409 | extern struct volume *afs_volumes[NVOLS]; | |
1410 | extern afs_dcache_id_t volumeInode; | |
1411 | extern struct volume *afs_FindVolume(struct VenusFid *afid, | |
1412 | afs_int32 locktype); | |
1413 | extern struct volume *afs_freeVolList; | |
1414 | extern afs_int32 fvTable[NFENTRIES]; | |
1415 | extern void LockAndInstallVolumeEntry(struct volume *av, struct vldbentry *ve, | |
1416 | int acell); | |
1417 | extern void LockAndInstallNVolumeEntry(struct volume *av, struct nvldbentry *ve, | |
1418 | int acell); | |
1419 | extern void LockAndInstallUVolumeEntry(struct volume *av, struct uvldbentry *ve, | |
1420 | int acell, struct cell *tcell, | |
1421 | struct vrequest *areq); | |
1422 | extern void afs_ResetVolumeInfo(struct volume *tv); | |
1423 | extern struct volume *afs_MemGetVolSlot(afs_int32 volid, struct cell *cell); | |
1424 | extern void afs_ResetVolumes(struct server *srvp, struct volume *tv); | |
1425 | extern struct volume *afs_GetVolume(struct VenusFid *afid, | |
1426 | struct vrequest *areq, | |
1427 | afs_int32 locktype); | |
1428 | extern struct volume *afs_GetVolumeByName(char *aname, | |
1429 | afs_int32 acell, int agood, | |
1430 | struct vrequest *areq, | |
1431 | afs_int32 locktype); | |
1432 | extern struct volume *afs_UFSGetVolSlot(afs_int32 volid, struct cell *cell); | |
1433 | extern void afs_CheckVolumeNames(int flags); | |
1434 | ||
1435 | /* Prototypes for generated files that aren't really in src/afs/ */ | |
1436 | ||
1437 | /* afs_uuid.c */ | |
1438 | extern afs_int32 afs_uuid_equal(afsUUID * u1, afsUUID * u2); | |
1439 | extern afs_int32 afs_uuid_is_nil(afsUUID * u1); | |
1440 | extern void afs_htonuuid(afsUUID * uuidp); | |
1441 | extern void afs_ntohuuid(afsUUID * uuidp); | |
1442 | extern afs_int32 afs_uuid_create(afsUUID * uuid); | |
1443 | extern u_short afs_uuid_hash(afsUUID * uuid); | |
1444 | ||
1445 | #if defined(AFS_SUN5_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_AIX_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_SGI62_ENV) || defined(UKERNEL) | |
1446 | #include "osi_prototypes.h" | |
1447 | #endif | |
1448 | ||
1449 | #endif /* _AFS_PROTOTYPES_H_ */ |