template <typename StatVfsT> void Check(StatVfsT& sb) { #ifdefined(__x86_64__) // On x86_64 based 16kb page size targets, the page size in userspace is simulated to 16kb but // the underlying filesystem block size would remain unchanged, i.e., 4kb. // For more info: // https://source.android.com/docs/core/architecture/16kb-page-size/getting-started-cf-x86-64-pgagnostic
EXPECT_EQ(4096, static_cast<int>(sb.f_bsize)); #else
EXPECT_EQ(getpagesize(), static_cast<int>(sb.f_bsize)); #endif
EXPECT_EQ(0U, sb.f_bfree);
EXPECT_EQ(0U, sb.f_ffree);
EXPECT_EQ(255U, sb.f_namemax);
// Linux 6.7 requires that all filesystems have a non-zero fsid. if (sb.f_fsid != 0U) { // fs/libfs.c reuses the filesystem's device number. struct stat proc_sb;
ASSERT_EQ(0, stat("/proc", &proc_sb));
EXPECT_EQ(proc_sb.st_dev, sb.f_fsid);
} else { // Prior to that, the fsid for /proc was just 0.
EXPECT_EQ(0U, sb.f_fsid);
}
// The kernel sets a private bit to indicate that f_flags is valid. // This flag is not supposed to be exposed to libc clients. staticconst uint32_t ST_VALID = 0x0020;
EXPECT_TRUE((sb.f_flag & ST_VALID) == 0) << sb.f_flag;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.