template <typename StatFsT> void Check(StatFsT& sb) { // 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 the same as the // underlying kernel page size. On all other targets the kernel page size is the // same as the userspace page size. // For more info: // https://source.android.com/docs/core/architecture/16kb-page-size/getting-started-cf-x86-64-pgagnostic
EXPECT_EQ(::android::meminfo::kernel_page_size(), static_cast<int>(sb.f_bsize));
EXPECT_EQ(0U, sb.f_bfree);
EXPECT_EQ(0U, sb.f_ffree);
EXPECT_EQ(255, static_cast<int>(sb.f_namelen));
// Linux 6.7 requires that all filesystems have a non-zero fsid. if (sb.f_fsid.__val[0] != 0U) { // fs/libfs.c reuses the filesystem's device number. struct stat proc_sb;
ASSERT_EQ(0, stat("/proc", &proc_sb));
EXPECT_EQ(static_cast<int>(proc_sb.st_dev), sb.f_fsid.__val[0]);
EXPECT_EQ(0, sb.f_fsid.__val[1]);
} else { // Prior to that, the fsid for /proc was just 0.
EXPECT_EQ(0, sb.f_fsid.__val[0]);
EXPECT_EQ(0, sb.f_fsid.__val[1]);
}
// 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_flags & ST_VALID) == 0) << sb.f_flags;
}
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.