1251875Speter/* $NetBSD: ufs_inode.h,v 1.3 2003/08/07 11:25:34 agc Exp $ */ 2251875Speter/* From: NetBSD: inode.h,v 1.27 2001/12/18 10:57:23 fvdl Exp $ */ 3251875Speter 4251875Speter/* 5251875Speter * Copyright (c) 1982, 1989, 1993 6251875Speter * The Regents of the University of California. All rights reserved. 7251875Speter * (c) UNIX System Laboratories, Inc. 8251875Speter * All or some portions of this file are derived from material licensed 9251875Speter * to the University of California by American Telephone and Telegraph 10251875Speter * Co. or Unix System Laboratories, Inc. and are reproduced herein with 11251875Speter * the permission of UNIX System Laboratories, Inc. 12251875Speter * 13251875Speter * Redistribution and use in source and binary forms, with or without 14251875Speter * modification, are permitted provided that the following conditions 15251875Speter * are met: 16251875Speter * 1. Redistributions of source code must retain the above copyright 17251875Speter * notice, this list of conditions and the following disclaimer. 18251875Speter * 2. Redistributions in binary form must reproduce the above copyright 19251875Speter * notice, this list of conditions and the following disclaimer in the 20251875Speter * documentation and/or other materials provided with the distribution. 21251875Speter * 3. Neither the name of the University nor the names of its contributors 22251875Speter * may be used to endorse or promote products derived from this software 23251875Speter * without specific prior written permission. 24251875Speter * 25251875Speter * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 26251875Speter * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27251875Speter * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28251875Speter * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 29251875Speter * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30251875Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 31251875Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32251875Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33251875Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34251875Speter * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35251875Speter * SUCH DAMAGE. 36251875Speter * 37251875Speter * @(#)inode.h 8.9 (Berkeley) 5/14/95 38251875Speter * $FreeBSD$ 39251875Speter */ 40251875Speter 41251875Speterunion dinode { 42251875Speter struct ufs1_dinode ffs1_din; 43251875Speter struct ufs2_dinode ffs2_din; 44251875Speter}; 45251875Speter 46251875Speterstruct inode { 47251875Speter ino_t i_number; /* The identity of the inode. */ 48251875Speter struct fs *i_fs; /* File system */ 49251875Speter union dinode i_din; 50251875Speter int i_fd; /* File descriptor */ 51251875Speter uint64_t i_size; 52251875Speter}; 53251875Speter 54251875Speter#define i_ffs1_atime i_din.ffs1_din.di_atime 55251875Speter#define i_ffs1_atimensec i_din.ffs1_din.di_atimensec 56251875Speter#define i_ffs1_blocks i_din.ffs1_din.di_blocks 57251875Speter#define i_ffs1_ctime i_din.ffs1_din.di_ctime 58251875Speter#define i_ffs1_ctimensec i_din.ffs1_din.di_ctimensec 59251875Speter#define i_ffs1_db i_din.ffs1_din.di_db 60251875Speter#define i_ffs1_flags i_din.ffs1_din.di_flags 61251875Speter#define i_ffs1_gen i_din.ffs1_din.di_gen 62251875Speter#define i_ffs11_gid i_din.ffs1_din.di_gid 63251875Speter#define i_ffs1_ib i_din.ffs1_din.di_ib 64251875Speter#define i_ffs1_mode i_din.ffs1_din.di_mode 65251875Speter#define i_ffs1_mtime i_din.ffs1_din.di_mtime 66251875Speter#define i_ffs1_mtimensec i_din.ffs1_din.di_mtimensec 67251875Speter#define i_ffs1_nlink i_din.ffs1_din.di_nlink 68251875Speter#define i_ffs1_rdev i_din.ffs1_din.di_rdev 69251875Speter#define i_ffs1_shortlink i_din.ffs1_din.db 70251875Speter#define i_ffs1_size i_din.ffs1_din.di_size 71251875Speter#define i_ffs1_uid i_din.ffs1_din.di_uid 72251875Speter 73251875Speter#define i_ffs2_atime i_din.ffs2_din.di_atime 74251875Speter#define i_ffs2_atimensec i_din.ffs2_din.di_atimensec 75251875Speter#define i_ffs2_blocks i_din.ffs2_din.di_blocks 76251875Speter#define i_ffs2_ctime i_din.ffs2_din.di_ctime 77251875Speter#define i_ffs2_ctimensec i_din.ffs2_din.di_ctimensec 78251875Speter#define i_ffs2_birthtime i_din.ffs2_din.di_birthtime 79251875Speter#define i_ffs2_birthnsec i_din.ffs2_din.di_birthnsec 80251875Speter#define i_ffs2_db i_din.ffs2_din.di_db 81251875Speter#define i_ffs2_flags i_din.ffs2_din.di_flags 82251875Speter#define i_ffs2_gen i_din.ffs2_din.di_gen 83251875Speter#define i_ffs21_gid i_din.ffs2_din.di_gid 84251875Speter#define i_ffs2_ib i_din.ffs2_din.di_ib 85251875Speter#define i_ffs2_mode i_din.ffs2_din.di_mode 86251875Speter#define i_ffs2_mtime i_din.ffs2_din.di_mtime 87251875Speter#define i_ffs2_mtimensec i_din.ffs2_din.di_mtimensec 88251875Speter#define i_ffs2_nlink i_din.ffs2_din.di_nlink 89251875Speter#define i_ffs2_rdev i_din.ffs2_din.di_rdev 90251875Speter#define i_ffs2_shortlink i_din.ffs2_din.db 91251875Speter#define i_ffs2_size i_din.ffs2_din.di_size 92251875Speter#define i_ffs2_uid i_din.ffs2_din.di_uid 93251875Speter 94251875Speter#undef DIP 95251875Speter#define DIP(ip, field) \ 96251875Speter (((ip)->i_fs->fs_magic == FS_UFS1_MAGIC) ? \ 97251875Speter (ip)->i_ffs1_##field : (ip)->i_ffs2_##field) 98269847Speter