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