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 | /* | |
11 | * UKERNEL OSI header file. Extends afs_osi.h. | |
12 | * | |
13 | * afs_osi.h includes this file, which is the only way this file should | |
14 | * be included in a source file. This file can redefine macros declared in | |
15 | * afs_osi.h. | |
16 | */ | |
17 | ||
18 | #ifndef _OSI_MACHDEP_H_ | |
19 | #define _OSI_MACHDEP_H_ | |
20 | ||
21 | #include "afs/sysincludes.h" | |
22 | ||
23 | #define MAX_OSI_PATH 1024 | |
24 | #define MAX_OSI_FILES 1024 | |
25 | #define MAX_OSI_LINKS 25 | |
26 | #define OSI_WAITHASH_SIZE 128 /* must be power of two */ | |
27 | #define MAX_HOSTADDR 32 | |
28 | ||
29 | /* XXX | |
30 | * | |
31 | * UKERNEL cannot trivially make use of typedef for afs_ucred_t and | |
32 | * afs_proc_t, as in the present design, the types are already introduced | |
33 | * with incorrect reference, so fall back to preprocessor for now | |
34 | */ | |
35 | ||
36 | #define afs_ucred_t struct usr_ucred | |
37 | #define afs_proc_t struct usr_proc | |
38 | ||
39 | #define AFS_KALLOC(A) afs_osi_Alloc(A) | |
40 | ||
41 | /* | |
42 | * Time related macros | |
43 | */ | |
44 | #define afs_hz HZ | |
45 | #define osi_Time() (time(NULL)) | |
46 | ||
47 | #undef gop_lookupname | |
48 | #define gop_lookupname(fnamep,segflg,followlink,compvpp) lookupname((fnamep),(segflg),(followlink),(compvpp)) | |
49 | #undef gop_lookupname_user | |
50 | #define gop_lookupname_user(fnamep,segflg,followlink,compvpp) lookupname((fnamep),(segflg),(followlink),(compvpp)) | |
51 | ||
52 | #define osi_vnhold(avc, r) do { VN_HOLD(AFSTOV(avc)); } while(0) | |
53 | ||
54 | #if 0 | |
55 | #define afs_suser(x) suser(x) | |
56 | #endif | |
57 | /* | |
58 | * Global lock support. | |
59 | */ | |
60 | ||
61 | extern usr_thread_t afs_global_owner; | |
62 | extern usr_mutex_t afs_global_lock; | |
63 | ||
64 | #define ISAFS_GLOCK() (usr_thread_self() == afs_global_owner) | |
65 | ||
66 | #define AFS_GLOCK() \ | |
67 | do { \ | |
68 | usr_mutex_lock(&afs_global_lock); \ | |
69 | afs_global_owner = usr_thread_self(); \ | |
70 | } while(0) | |
71 | #define AFS_GUNLOCK() \ | |
72 | do { \ | |
73 | AFS_ASSERT_GLOCK(); \ | |
74 | memset(&afs_global_owner, 0, sizeof(usr_thread_t)); \ | |
75 | usr_mutex_unlock(&afs_global_lock); \ | |
76 | } while(0) | |
77 | #define AFS_ASSERT_GLOCK() \ | |
78 | do { if (!ISAFS_GLOCK()) { osi_Panic("afs global lock not held"); } } while(0) | |
79 | #define osi_GlockInit() \ | |
80 | usr_mutex_init(&afs_global_lock, "afs_global_lock", MUTEX_DEFAULT, NULL) | |
81 | ||
82 | extern int afs_bufferpages; | |
83 | ||
84 | extern int afs_suser(void *credp); | |
85 | ||
86 | #define setuerror(erval) get_user_struct()->u_error = (erval) | |
87 | #define getuerror(erval) get_user_struct()->u_error | |
88 | #define osi_curcred() get_user_struct()->u_cred | |
89 | ||
90 | #define osi_procname(procname, size) strncpy(procname, "(unknown)", size) | |
91 | #endif /* _OSI_MACHDEP_H_ */ |