e2674bbee8ff9f1df011f873b8033c0e0493e522
[openafs.git] / src / afs / HPUX / 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  * HPUX 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 "../h/kern_sem.h"
22
23 #define afs_hz      hz
24 extern struct timeval time;
25 #define osi_Time() (time.tv_sec)
26
27 #ifdef PAGESIZE
28 #undef PAGESIZE
29 #endif
30 #define PAGESIZE 8192
31
32 #define AFS_UCRED       ucred
33 #define AFS_PROC        proc_t
34
35 #define osi_vnhold(avc, r)  do { VN_HOLD(AFSTOV(avc)); } while(0)
36 #define gop_rdwr(rw,gp,base,len,offset,segflg,unit,aresid) \
37   vn_rdwr((rw),(gp),(base),(len),(offset),(segflg),(unit),(aresid),0)
38
39 #undef  afs_suser
40
41 #define getpid()                (afs_uint32)p_pid(u.u_procp)
42
43 #define getppid()               (afs_uint32)p_ppid(u.u_procp)
44
45 #ifdef KERNEL
46 /*
47  * Global lock support. 
48  *
49  * HP uses global mutex to protect afs land
50  */
51
52 extern sema_t afs_global_sema;
53
54 extern void osi_InitGlock(void);
55
56 extern void       afsHash(int nbuckets);
57 extern sv_sema_t *afsHashInsertFind(tid_t key);
58 extern sv_sema_t *afsHashFind(tid_t key);
59 extern void       afsHashRelease(tid_t key);
60
61 #define AFS_GLOCK_PID   kt_tid(u.u_kthreadp)
62 #define AFS_SAVE_SEMA   afsHashInsertFind(AFS_GLOCK_PID)
63 #define AFS_FIND_SEMA   afsHashFind(AFS_GLOCK_PID)
64 #define AFS_GLOCK()     MP_PXSEMA(&afs_global_sema, AFS_SAVE_SEMA)
65 #define AFS_GUNLOCK()   (AFS_ASSERT_GLOCK(), MP_VXSEMA(&afs_global_sema,AFS_FIND_SEMA), (!uniprocessor ? (afsHashRelease(AFS_GLOCK_PID),0) : 0))
66 #define ISAFS_GLOCK()   (!uniprocessor ? owns_sema(&afs_global_sema):1)
67
68 #define AFS_RXGLOCK() 
69 #define AFS_RXGUNLOCK()
70 #define ISAFS_RXGLOCK() 1
71
72 /* Uses splnet only in the SP case */
73 #define SPLVAR      register ulong_t splvar
74 #define NETPRI      NET_SPLNET(splvar)
75 #define USERPRI     NET_SPLX(splvar)
76 #endif /* KERNEL */
77
78 /* 
79  * On HP, the global lock is an alpha semaphore, hence it is automatically
80  * released and reacquired aroubd a sleep() and wakeup().
81  */
82
83 #define afs_osi_Sleep(x)        sleep((caddr_t) x,PZERO-2)
84 #define afs_osi_Wakeup(x)       wakeup((caddr_t) x)
85 #define osi_NullHandle(x)       ((x)->proc == (caddr_t) 0)
86
87 extern caddr_t kmem_alloc();
88 #include <sys/kthread_iface.h>  /* for kt_cred() */
89
90 /* Expected to be available as a patch from HP */
91 #include <vfs_vm.h>
92
93 #endif /* _OSI_MACHDEP_H_ */
94
95
96
97
98
99
100