ad08918ef5f733a0d7c953b89c5a9815907d9578
[openafs.git] / src / afs / UKERNEL / osi_machdep.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  * 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
80 extern int afs_bufferpages;
81
82 extern int afs_suser(void *credp);
83
84 #endif /* _OSI_MACHDEP_H_ */