summaryrefslogtreecommitdiff
path: root/dialects/freebsd/dzfs.h
diff options
context:
space:
mode:
Diffstat (limited to 'dialects/freebsd/dzfs.h')
-rw-r--r--dialects/freebsd/dzfs.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/dialects/freebsd/dzfs.h b/dialects/freebsd/dzfs.h
new file mode 100644
index 0000000..6ffe7de
--- /dev/null
+++ b/dialects/freebsd/dzfs.h
@@ -0,0 +1,112 @@
+/*
+ * dzfs.h - FreeBSD header file for ZFS
+ */
+
+
+/*
+ * Copyright 2008 Purdue Research Foundation, West Lafayette, Indiana
+ * 47907. All rights reserved.
+ *
+ * Written by Victor A. Abell
+ *
+ * This software is not subject to any license of the American Telephone
+ * and Telegraph Company or the Regents of the University of California.
+ *
+ * Permission is granted to anyone to use this software for any purpose on
+ * any computer system, and to alter it and redistribute it freely, subject
+ * to the following restrictions:
+ *
+ * 1. Neither the authors nor Purdue University are responsible for any
+ * consequences of the use of this software.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ * explicit claim or by omission. Credit to the authors and Purdue
+ * University must appear in documentation and sources.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 4. This notice may not be removed or altered.
+ */
+
+
+/*
+ * $Id: dzfs.h,v 1.3 2011/08/07 22:51:28 abe Exp $
+ */
+
+
+#if !defined(FREEBSD_ZFS_H)
+#define FREEBSD_ZFS_H 1
+# if defined(HAS_ZFS)
+
+
+/*
+ * The _PROTOTYPE macro provides strict ANSI C prototypes if __STDC__
+ * is defined, and old-style K&R prototypes otherwise.
+ *
+ * (With thanks to Andy Tanenbaum)
+ */
+
+# if defined(__STDC__)
+#define _PROTOTYPE(function, params) function params
+# else /* !defined(__STDC__) */
+#define _PROTOTYPE(function, params) function()
+# endif /* defined(__STDC__) */
+
+
+/*
+ * The following define keeps gcc>=2.7 from complaining about the failure
+ * of the Exit() function to return.
+ *
+ * Paul Eggert supplied it.
+ */
+
+# if defined(__GNUC__) && !(__GNUC__<2 || (__GNUC__==2 && __GNUC_MINOR__<7))
+#define exiting __attribute__((__noreturn__))
+# else /* !gcc || gcc<2.7 */
+#define exiting
+# endif /* gcc && gcc>=2.7 */
+
+# if !defined(INODETYPE)
+#define INODETYPE unsigned long long
+# endif /* !defined(INODETYPE) */
+
+# if !defined(FREEBSD_KA_T)
+# if FREEBSDV<2000
+typedef off_t KA_T;
+# else /* FREEBSDV>=2000 */
+typedef u_long KA_T;
+# endif /* FREEBSDV<2000 */
+#define FREEBSD_KA_T 1 /* for dlsof.h */
+# endif /* !defined(FREEBSD_KA_T) */
+
+# if !defined(READLEN_T)
+#define READLEN_T int
+# endif /* !defined(READLEN_T) */
+
+# if !defined(SZOFFTYPE)
+#define SZOFFTYPE unsigned long long
+# endif /* !defined(SZOFFTYPE) */
+
+
+/*
+ * Structure for passing znode info
+ */
+
+typedef struct zfs_info {
+ INODETYPE ino; /* inode number */
+ KA_T lockf; /* znode's z_lockf pointer */
+ long nl; /* number of links */
+ dev_t rdev; /* "raw" device number */
+ SZOFFTYPE sz; /* size */
+ unsigned char ino_def; /* ino defined status */
+ unsigned char nl_def; /* nl defined status */
+ unsigned char rdev_def; /* rdev defined status */
+ unsigned char sz_def; /* sz defined status */
+} zfs_info_t;
+
+_PROTOTYPE(extern int kread,(KA_T addr, char *buf, READLEN_T len));
+_PROTOTYPE(extern char *readzfsnode,(KA_T va, zfs_info_t *zi, int vr));
+
+# endif /* defined(HAS_ZFS) */
+#endif /* defined(FREEBSD_DZFS_H) */