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 * UKERNEL OSI header file. Extends afs_osi.h.
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
18 #ifndef _OSI_MACHDEP_H_
19 #define _OSI_MACHDEP_H_
21 #include "afs/sysincludes.h"
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
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
36 #define afs_ucred_t struct usr_ucred
37 #define afs_proc_t struct usr_proc
39 #define AFS_KALLOC(A) afs_osi_Alloc(A)
45 #define osi_Time() (time(NULL))
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))
53 * Global lock support.
56 extern usr_thread_t afs_global_owner;
57 extern usr_mutex_t afs_global_lock;
59 #define ISAFS_GLOCK() (usr_thread_self() == afs_global_owner)
63 usr_mutex_lock(&afs_global_lock); \
64 afs_global_owner = usr_thread_self(); \
66 #define AFS_GUNLOCK() \
69 memset(&afs_global_owner, 0, sizeof(usr_thread_t)); \
70 usr_mutex_unlock(&afs_global_lock); \
72 #define AFS_ASSERT_GLOCK() \
73 do { if (!ISAFS_GLOCK()) { osi_Panic("afs global lock not held"); } } while(0)
74 #define osi_GlockInit() \
75 usr_mutex_init(&afs_global_lock, "afs_global_lock", MUTEX_DEFAULT, NULL)
77 extern int afs_bufferpages;
79 extern int afs_suser(afs_ucred_t *credp);
81 #define setuerror(erval) get_user_struct()->u_error = (erval)
82 #define getuerror(erval) get_user_struct()->u_error
83 #define osi_curcred() get_user_struct()->u_cred
85 #define osi_procname(procname, size) strncpy(procname, "(unknown)", size)
88 osi_GetTime(osi_timeval32_t *atv)
91 gettimeofday(&now, NULL);
92 atv->tv_sec = now.tv_sec;
93 atv->tv_usec = now.tv_usec;
96 #endif /* _OSI_MACHDEP_H_ */