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)
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 */