+
+static inline int
+clz(unsigned int num)
+{
+#if (__arm__ || __arm64__)
+ // On ARM, clz(0) is defined to return number of bits in the input type
+ return __builtin_clz(num);
+#else
+ // On Intel, clz(0) is undefined
+ return num ? __builtin_clz(num) : sizeof(num) * CHAR_BIT;
+#endif
+}
+
+#if XNU_KERNEL_PRIVATE
+
+/*
+ * Define a function that for whatever reason needs to exist, but must never be
+ * called.
+ */
+#define UNSUPPORTED_API(funcname, ...) \
+ _Pragma("clang diagnostic push") \
+ _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \
+ funcname(__VA_ARGS__) { panic(__func__ ": unsupported API\n"); } \
+ _Pragma("clang diagnostic pop")
+
+#endif
+