+#ifdef CONFIG_LINUX_FALLOCATE
+#define FIO_HAVE_NATIVE_FALLOCATE
+static inline bool fio_fallocate(struct fio_file *f, uint64_t offset,
+ uint64_t len)
+{
+ int ret;
+ ret = fallocate(f->fd, 0, offset, len);
+ if (ret == 0)
+ return true;
+
+ /* Work around buggy old glibc versions... */
+ if (ret > 0)
+ errno = ret;
+
+ return false;
+}
+#endif
+
+#define FIO_HAVE_CPU_HAS
+static inline bool os_cpu_has(cpu_features feature)
+{
+ bool have_feature;
+ unsigned long fio_unused hwcap;
+
+ switch (feature) {
+#ifdef ARCH_HAVE_CRC_CRYPTO
+ case CPU_ARM64_CRC32C:
+ hwcap = getauxval(AT_HWCAP);
+ have_feature = (hwcap & HWCAP_CRC32) != 0;
+ break;
+#endif
+ default:
+ have_feature = false;
+ }
+
+ return have_feature;
+}
+