Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / afs / AIX / 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 * AIX 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
22#undef osi_ThreadUnique
23#define osi_ThreadUnique() thread_self()
24
25#define afs_hz HZ
26extern long time;
27#define osi_Time() (time)
28
29typedef struct ucred afs_ucred_t;
30typedef struct proc afs_proc_t;
31
32#define afs_bufferpages v.v_bufhw
33
34#define osi_vnhold(avc, r) do { VN_HOLD(AFSTOV(avc)); } while (0)
35
36#undef gop_lookupname
37#define gop_lookupname(fnamep,segflg,followlink,compvpp) \
38 lookupvp((fnamep), (followlink), (compvpp), &afs_osi_cred)
39
40#undef gop_lookupname_user
41#define gop_lookupname_user(fnamep,segflg,followlink,compvpp) \
42 lookupvp((fnamep), (followlink), (compvpp), &afs_osi_cred)
43
44#undef afs_suser
45
46#undef setuerror
47#undef getuerror
48/* #undef getpid getpid() provided by native kernel */
49#include <ulimit.h>
50#define get_ulimit() (ulimit(GET_FSIZE, 0) << UBSHIFT)
51
52#include <sys/lockl.h>
53#include <sys/lock_def.h>
54#include <sys/lock_alloc.h>
55#include <sys/sleep.h>
56
57extern simple_lock_data afs_global_lock;
58#define AFS_GLOCK() do { \
59 if (lock_mine((void *)&afs_global_lock)) \
60 osi_Panic("AFS_GLOCK %s %d", \
61 __FILE__, __LINE__); \
62 simple_lock((void *)&afs_global_lock); \
63 } while(0)
64#define AFS_GUNLOCK() do { \
65 if (!lock_mine((void *)&afs_global_lock)) \
66 osi_Panic("AFS_GUNLOCK %s %d", \
67 __FILE__, __LINE__); \
68 simple_unlock((void *)&afs_global_lock); \
69 } while(0)
70#define ISAFS_GLOCK() lock_mine((void *)&afs_global_lock)
71
72#if defined(AFS_AIX41_ENV)
73#define osi_InitGlock() \
74 do { \
75 lock_alloc((void *)&afs_global_lock, LOCK_ALLOC_PIN, 1, 1); \
76 simple_lock_init((void *)&afs_global_lock); \
77 } while(0)
78#else
79#define osi_InitGlock() \
80 mutex_init(&afs_global_lock, "afs_global_lock", MUTEX_DEFAULT, NULL)
81#endif
82
83/* Reading the current proc name from kernelspace is difficult. It is
84 * probably possible via indexing into v.vb_proc, but for now don't bother.
85 * To actually obtain the proc name, look at afs_procsize_init and
86 * src/afs/AIX/osi_gcpags.c for how to look at the process list */
87#define osi_procname(procname, size) strncpy(procname, "", size)
88
89#endif /* _OSI_MACHDEP_H_ */