summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc/namei.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sparc/namei.h')
-rw-r--r--include/asm-sparc/namei.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/include/asm-sparc/namei.h b/include/asm-sparc/namei.h
new file mode 100644
index 000000000..b71537565
--- /dev/null
+++ b/include/asm-sparc/namei.h
@@ -0,0 +1,54 @@
+/* $Id: namei.h,v 1.3 1997/01/26 23:36:36 davem Exp $
+ * linux/include/asm-sparc/namei.h
+ *
+ * Routines to handle famous /usr/gnemul/s*.
+ * Included from linux/fs/namei.c
+ */
+
+#ifndef __SPARC_NAMEI_H
+#define __SPARC_NAMEI_H
+
+#define SPARC_BSD_EMUL "usr/gnemul/sunos/"
+#define SPARC_SOL_EMUL "usr/gnemul/solaris/"
+
+#define translate_namei(pathname, base, follow_links, res_inode) ({ \
+ if ((current->personality & (PER_BSD|PER_SVR4)) && !base && *pathname == '/') { \
+ struct inode *emul_ino; \
+ int namelen; \
+ const char *name; \
+ \
+ while (*pathname == '/') \
+ pathname++; \
+ current->fs->root->i_count++; \
+ if (dir_namei (current->personality & PER_BSD ? SPARC_BSD_EMUL : SPARC_SOL_EMUL, \
+ &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { \
+ *res_inode = NULL; \
+ if (_namei (pathname, emul_ino, follow_links, res_inode) >= 0 && *res_inode) \
+ return 0; \
+ } \
+ base = current->fs->root; \
+ base->i_count++; \
+ } \
+})
+
+#define translate_open_namei(pathname, flag, mode, res_inode, base) ({ \
+ if ((current->personality & (PER_BSD|PER_SVR4)) && !base && *pathname == '/') { \
+ struct inode *emul_ino; \
+ int namelen; \
+ const char *name; \
+ \
+ while (*pathname == '/') \
+ pathname++; \
+ current->fs->root->i_count++; \
+ if (dir_namei (current->personality & PER_BSD ? SPARC_BSD_EMUL : SPARC_SOL_EMUL, \
+ &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { \
+ *res_inode = NULL; \
+ if (open_namei (pathname, flag, mode, res_inode, emul_ino) >= 0 && *res_inode) \
+ return 0; \
+ } \
+ base = current->fs->root; \
+ base->i_count++; \
+ } \
+})
+
+#endif /* __SPARC_NAMEI_H */