e8d7ba05a3d71c313fbd9dc4b7b36ae08cc4be2d
[openafs.git] / src / afs / UKERNEL / afs_usrops.h
1 /*
2  * (C) COPYRIGHT IBM CORPORATION 1997
3  * LICENSED MATERIALS - PROPERTY OF IBM
4  */
5
6 #ifndef __AFS_USROPS_H__
7 #define __AFS_USROPS_H__ 1
8
9 #if !defined(UKERNEL)
10 #include <afs/sysincludes.h>
11 #endif /* !defined(UKERNEL) */
12
13 /*
14  * Macros to manipulate doubly linked lists
15  */
16 #define DLL_INIT_LIST(_HEAD, _TAIL) \
17     { _HEAD = NULL ; _TAIL = NULL; }
18
19 #define DLL_INSERT_TAIL(_ELEM, _HEAD, _TAIL, _NEXT, _PREV) \
20 { \
21     if (_HEAD == NULL) { \
22         _ELEM->_NEXT = NULL; \
23         _ELEM->_PREV = NULL; \
24         _HEAD = _ELEM; \
25         _TAIL = _ELEM; \
26     } else { \
27         _ELEM->_NEXT = NULL; \
28         _ELEM->_PREV = _TAIL; \
29         _TAIL->_NEXT = _ELEM; \
30         _TAIL = _ELEM; \
31     } \
32 }
33
34 #define DLL_DELETE(_ELEM, _HEAD, _TAIL, _NEXT, _PREV) \
35 { \
36     if (_ELEM->_NEXT == NULL) { \
37         _TAIL = _ELEM->_PREV; \
38     } else { \
39         _ELEM->_NEXT->_PREV = _ELEM->_PREV; \
40     } \
41     if (_ELEM->_PREV == NULL) { \
42         _HEAD = _ELEM->_NEXT; \
43     } else { \
44         _ELEM->_PREV->_NEXT = _ELEM->_NEXT; \
45     } \
46     _ELEM->_NEXT = NULL; \
47     _ELEM->_PREV = NULL; \
48 }
49
50 extern struct afsconf_dir *afs_cdir;
51 extern char afs_LclCellName[64];
52
53 extern int afs_osicred_Initialized;
54
55 extern struct usr_vnode *afs_RootVnode;
56
57 extern struct usr_vnode *afs_CurrentDir;
58 extern struct usr_vnode *afs_FileTable[];
59 extern int afs_FileFlags[];
60 extern int afs_FileOffsets[];
61
62 extern char afs_mountDir[];
63 extern int afs_mountDirLen;
64
65 extern void uafs_InitClient(void);
66 extern void uafs_InitThread(void);
67 extern void uafs_Init(char *, char *, char *, char *, int, int, int, int,
68                       int, int, int, int, int, int, char *);
69 extern void uafs_RxServerProc(void);
70 extern int uafs_LookupLink(struct usr_vnode *vp, struct usr_vnode *parentP,
71                            struct usr_vnode **vpp);
72 extern int uafs_LookupName(char *path, struct usr_vnode *parentP,
73                            struct usr_vnode **vpp, int follow);
74 extern int uafs_LookupParent(char *path, struct usr_vnode **vpp);
75 extern int uafs_GetAttr(struct usr_vnode *vp, struct stat *stats);
76
77 extern int uafs_SetTokens(char *buf, int len);
78 extern int uafs_SetTokens_r(char *buf, int len);
79 extern int uafs_mkdir(char *path, int mode);
80 extern int uafs_mkdir_r(char *path, int mode);
81 extern int uafs_chdir(char *path);
82 extern int uafs_chdir_r(char *path);
83 extern int uafs_open(char *path, int flags, int mode);
84 extern int uafs_open_r(char *path, int flags, int mode);
85 extern int uafs_creat(char *path, int mode);
86 extern int uafs_creat_r(char *path, int mode);
87 extern int uafs_write(int fd, char *buf, int len);
88 extern int uafs_write_r(int fd, char *buf, int len);
89 extern int uafs_read(int fd, char *buf, int len);
90 extern int uafs_read_r(int fd, char *buf, int len);
91 extern int uafs_fsync(int fd);
92 extern int uafs_fsync_r(int fd);
93 extern int uafs_close(int fd);
94 extern int uafs_close_r(int fd);
95 extern int uafs_stat(char *path, struct stat *stats);
96 extern int uafs_stat_r(char *path, struct stat *stats);
97 extern int uafs_lstat(char *path, struct stat *stats);
98 extern int uafs_lstat_r(char *path, struct stat *stats);
99 extern int uafs_fstat(int fd, struct stat *stats);
100 extern int uafs_fstat_r(int fd, struct stat *stats);
101 extern int uafs_truncate(char *path, int len);
102 extern int uafs_truncate_r(char *path, int len);
103 extern int uafs_ftruncate(int fd, int len);
104 extern int uafs_ftruncate_r(int fd, int len);
105 extern int uafs_chmod(char *path, int mode);
106 extern int uafs_chmod_r(char *path, int mode);
107 extern int uafs_fchmod(int fd, int mode);
108 extern int uafs_fchmod_r(int fd, int mode);
109 extern int uafs_symlink(char *target, char *source);
110 extern int uafs_symlink_r(char *target, char *source);
111 extern int uafs_unlink(char *path);
112 extern int uafs_unlink_r(char *path);
113 extern int uafs_rmdir(char *path);
114 extern int uafs_rmdir_r(char *path);
115 extern int uafs_readlink(char *path, char *buf, int len);
116 extern int uafs_readlink_r(char *path, char *buf, int len);
117 extern int uafs_link(char *existing, char *new);
118 extern int uafs_link_r(char *existing, char *new);
119 extern int uafs_rename(char *old, char *new);
120 extern int uafs_rename_r(char *old, char *new);
121 extern int uafs_FlushFile(char *path);
122 extern int uafs_FlushFile_r(char *path);
123 extern usr_DIR *uafs_opendir(char *path);
124 extern usr_DIR *uafs_opendir_r(char *path);
125 extern struct usr_dirent *uafs_readdir(usr_DIR *dirp);
126 extern struct usr_dirent *uafs_readdir_r(usr_DIR *dirp);
127 extern int uafs_getdents(int fd, struct min_direct *buf, int len);
128 extern int uafs_getdents_r(int fd, struct min_direct *buf, int len);
129 extern int uafs_closedir(usr_DIR *dirp);
130 extern int uafs_closedir_r(usr_DIR *dirp);
131 extern void uafs_ThisCell(char *namep);
132 extern void uafs_ThisCell_r(char *namep);
133 extern int uafs_klog(char *user,char *cell,char *passwd,char **reason);
134 extern int uafs_klog_r(char *user,char *cell,char *passwd,char **reason);
135 extern int uafs_unlog(void);
136 extern int uafs_unlog_r(void);
137 extern void uafs_SetRxPort(int);
138 extern char *uafs_afsPathName(char *);
139 extern int uafs_RPCStatsEnableProc(void);
140 extern int uafs_RPCStatsDisableProc(void);
141 extern int uafs_RPCStatsEnablePeer(void);
142 extern int uafs_RPCStatsDisablePeer(void);
143
144 #endif /* __AFS_USROPS_H__ */