+/*
+ * ILP32 *user* version of statfs structure.
+ * NOTE - must be kept in sync with struct statfs in mount.h
+ */
+struct user32_statfs {
+ short f_otype; /* TEMPORARY SHADOW COPY OF f_type */
+ short f_oflags; /* TEMPORARY SHADOW COPY OF f_flags */
+ user32_long_t f_bsize; /* fundamental file system block size */
+ user32_long_t f_iosize; /* optimal transfer block size */
+ user32_long_t f_blocks; /* total data blocks in file system */
+ user32_long_t f_bfree; /* free blocks in fs */
+ user32_long_t f_bavail; /* free blocks avail to non-superuser */
+ user32_long_t f_files; /* total file nodes in file system */
+ user32_long_t f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+ uid_t f_owner; /* user that mounted the filesystem */
+ short f_reserved1; /* spare for later */
+ short f_type; /* type of filesystem */
+ user32_long_t f_flags; /* copy of mount exported flags */
+ user32_long_t f_reserved2[2]; /* reserved for future use */
+ char f_fstypename[MFSNAMELEN]; /* fs type name */
+ char f_mntonname[MNAMELEN]; /* directory on which mounted */
+ char f_mntfromname[MNAMELEN];/* mounted filesystem */
+ char f_reserved3; /* For alignment */
+ user32_long_t f_reserved4[4]; /* For future use */
+};
+
+/*
+ * throttle I/Os are affected only by normal I/Os happening on the same bsd device node. For example, disk1s3 and
+ * disk1s5 are the same device node, while disk1s3 and disk2 are not (although disk2 might be a mounted disk image file
+ * and the disk image file resides on a partition in disk1). The following constant defines the maximum number of
+ * different bsd device nodes the algorithm can consider, and larger numbers are rounded by this maximum. Since
+ * throttled I/O is usually useful in non-server environment only, a small number 16 is enough in most cases
+ */
+#define LOWPRI_MAX_NUM_DEV 16
+