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
10 #ifndef AFS_AFSSYSCALLS_H
11 #define AFS_AFSSYSCALLS_H
15 /* Declare Inode type. */
16 #include <afs/param.h>
18 #include <sys/types.h>
20 typedef afs_uint64 Inode
;
22 #else /* AFS_NAMEI_ENV */
23 #ifdef AFS_64BIT_IOPS_ENV
25 typedef uint64_t Inode
;
27 #include <sys/types.h>
28 typedef afs_uint64 Inode
;
29 #endif /* AFS_SGI62_ENV */
30 #else /* AFS_64BIT_IOPS_ENV */
31 typedef unsigned int Inode
;
35 extern FILE *inode_debug_log
;
36 #define AFS_DEBUG_IOPS_LOG(F) (inode_debug_log = (F))
38 #define AFS_DEBUG_IOPS_LOG(F)
42 #ifdef AFS_LINUX20_ENV
43 int proc_afs_syscall(long syscall
, long param1
, long param2
, long param3
,
44 long param4
, int *rval
);
47 /* Declarations for inode system calls. */
48 #ifdef AFS_SGI_XFS_IOPS_ENV
49 extern uint64_t icreatename64(int dev
, char *partname
, int p0
, int p1
, int p2
,
51 extern int iopen64(int dev
, uint64_t inode
, int usrmod
);
52 extern int iinc64(int dev
, uint64_t inode
, int inode_p1
);
53 extern int idec64(int dev
, uint64_t inode
, int inode_p1
);
54 extern int ilistinode64(int dev
, uint64_t inode
, void *data
, int *datalen
);
57 extern uint64_t debug_icreatename64(int dev
, char *partname
, int p0
, int p1
,
58 int p2
, int p3
, char *file
, int line
);
59 extern int debug_iopen64(int dev
, uint64_t inode
, int usrmod
, char *file
,
61 extern int debug_iinc64(int dev
, uint64_t inode
, int inode_p1
, char *file
,
63 extern int debug_idec64(int dev
, uint64_t inode
, int inode_p1
, char *file
,
66 #endif /* AFS_DEBUG_IOPS */
67 #endif /* AFS_SGI_XFS_IOPS_ENV */
69 #ifdef AFS_64BIT_IOPS_ENV
70 extern int inode_read(int dev
, Inode inode
, int inode_p1
, uint32_t offset
,
71 char *cbuf
, uint32_t count
);
72 extern int inode_write(int dev
, Inode inode
, int inode_p1
, uint32_t offset
,
73 char *cbuf
, uint32_t count
);
75 extern int inode_read();
76 extern int inode_write();
79 #ifdef AFS_SGI_VNODE_GLUE
80 /* flag: 1 = has NUMA, 0 = no NUMA, -1 = kernel decides. */
81 extern int afs_init_kernel_config(int flag
);
82 #endif /* AFS_SGI_VNODE_GLUE */
84 #endif /* AFS_NAMEI_ENV */
87 /* minimum size of string to hand to PrintInode */
88 #define AFS_INO_STR_LENGTH 32
89 typedef char afs_ino_str_t
[AFS_INO_STR_LENGTH
];
91 /* Print either 32 or 64 bit inode numbers. char * may be NULL. In which case
92 * a local statis is returned.
94 #ifdef AFS_64BIT_IOPS_ENV
95 extern char *PrintInode(afs_ino_str_t
, Inode
);
97 extern char *PrintInode();
100 /* Some places in the code assume icreate can return 0 when there's
103 #define VALID_INO(I) ((I) != (Inode)-1 && (I) != (Inode)0)
105 #ifndef AFS_NAMEI_ENV
107 /* Definitions of inode macros. */
108 #ifdef AFS_SGI_XFS_IOPS_ENV
109 #ifdef AFS_DEBUG_IOPS
110 #define ICREATE(DEV, NAME, NI, P0, P1, P2, P3) \
111 debug_icreatename64(DEV, NAME, P0, P1, P2, P3, __FILE__, __LINE__)
112 #define IDEC(DEV, INO, VID) debug_idec64(DEV, INO, VID, __FILE__, __LINE__)
113 #define IINC(DEV, INO, VID) debug_iinc64(DEV, INO, VID, __FILE__, __LINE__)
114 #define IOPEN(DEV, INO, MODE) debug_iopen64(DEV, INO, MODE, __FILE__, __LINE__)
116 #define ICREATE(DEV, NAME, NI, P0, P1, P2, P3) \
117 icreatename64(DEV, NAME, P0, P1, P2, P3)
118 #define IDEC(DEV, INO, VID) idec64(DEV, INO, VID)
119 #define IINC(DEV, INO, VID) iinc64(DEV, INO, VID)
120 #define IOPEN(DEV, INO, MODE) iopen64(DEV, INO, MODE)
122 #define AFS_IOPS_DEFINED 1
123 #endif /* AFS_SGI_IOPS_ENV */
126 #ifndef AFS_IOPS_DEFINED
127 #ifdef AFS_DEBUG_IOPS
129 #define ICREATE(DEV, NAME, NI, P0, P1, P2, P3) \
130 icreate(DEV, NI, P0, P1, P2, P3)
131 #define IDEC(DEV, INO, VID) idec(DEV, INO, VID)
132 #define IINC(DEV, INO, VID) iinc(DEV, INO, VID)
133 #define IOPEN(DEV, INO, MODE) iopen(DEV, INO, MODE)
135 #endif /* AFS_IOPS_DEFINED */
138 #endif /* AFS_NAMEI_ENV */
140 /* Declarations for lsetpag and lpioctl */
142 int lpioctl(char *path
, int cmd
, void *cmarg
, int follow
);
144 #endif /* AFS_NT40_ENV */
146 #endif /* AFS_AFSSYSCALLS_H */