diff options
Diffstat (limited to 'dialects/freebsd/dzfs.h')
-rw-r--r-- | dialects/freebsd/dzfs.h | 112 |
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) */ |