Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / afs / UKERNEL / osi_machdep.h
CommitLineData
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
61extern usr_thread_t afs_global_owner;
62extern 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
82extern int afs_bufferpages;
83
84extern 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_ */