/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _GRUB_UFS_H
#define _GRUB_UFS_H_
#ifdef FSYS_UFS
/* ufs specific constants */
/* file types */
typedef unsigned char grub_uchar_t;
typedef unsigned short grub_ushort_t;
typedef unsigned short grub_o_mode_t;
typedef unsigned short grub_o_uid_t;
typedef unsigned short grub_o_gid_t;
typedef long grub_ino_t;
typedef long grub_int32_t;
typedef long grub_uid_t;
typedef long grub_gid_t;
typedef unsigned long grub_uint32_t;
typedef unsigned long grub_daddr32_t;
typedef unsigned long grub_time32_t;
struct timeval32 {
};
/*
* Per cylinder group information; summarized in blocks allocated
* from first cylinder group data blocks. These blocks have to be
* read in from fs_csaddr (size fs_cssize) in addition to the
* super block.
*
* N.B. sizeof (struct csum) must be a power of two in order for
* the ``fs_cs'' macro to work (see below).
*/
struct csum {
};
/* Ufs super block */
struct fs {
/* these are configuration parameters */
/* these fields can be computed from the others */
/* these are configuration parameters */
/* these fields can be computed from the others */
/* yet another configuration parameter */
/* these fields are derived from the hardware */
/* USL SVR4 compatibility */
/*
* * USL SVR4 compatibility
*
* There was a significant divergence here between Solaris and
* SVR4 for x86. By swapping these two members in the superblock,
* we get read-only compatibility of SVR4 filesystems. Otherwise
* there would be no compatibility. This change was introduced
* during bootstrapping of Solaris on x86. By making this ifdef'ed
* on byte order, we provide ongoing compatibility across all
* platforms with the same byte order, the highest compatibility
* that can be achieved.
*/
/* unique id for this filesystem (currently unused and unmaintained) */
/* In 4.3 Tahoe this space is used by fs_headswitch and fs_trkseek */
/* Neither of those fields is used in the Tahoe code right now but */
/* there could be problems if they are. */
/* sizes determined by number of cylinder groups and their sizes */
/* these fields are derived from the hardware */
/* this comes from the disk driver partitioning */
/* these fields can be computed from the others */
/* this data must be re-computed after crashes */
/* these fields are cleared at mount time */
/* these fields retain the current block allocation info */
/*
* The following used to be fs_csp[MAXCSBUFS]. It was not
* used anywhere except in old utilities. We removed this
* in 5.6 and expect fs_u.fs_csp to be used instead.
* We no longer limit fs_cssize based on MAXCSBUFS.
*/
union { /* fs_cs (csum) info */
} fs_u;
/* USL SVR4 compatibility */
/* rotation */
/* actually longer */
};
struct icommon {
/* 0 = none */
};
struct direct {
};
/* inode macros */
(blkstofrags((fs), \
/* block conversion macros */
/* frag to blk */
/* cynlinder group macros */
#endif /* FSYS_UFS */
#endif /* !_GRUB_UFS_H */