int dev_urandom(void *p, size_t n);
void random_bytes(void *p, size_t n);
+void initialize_srand(void);
static inline uint64_t random_u64(void) {
uint64_t u;
return __SIZEOF_INT__ * 8 - __builtin_clz(x) - 1;
}
+static inline unsigned log2u(unsigned x) {
+ assert(x > 0);
+
+ return sizeof(unsigned) * 8 - __builtin_clz(x) - 1;
+}
+
+static inline unsigned log2u_round_up(unsigned x) {
+ assert(x > 0);
+
+ if (x == 1)
+ return 0;
+
+ return log2u(x - 1) + 1;
+}
+
static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0;
}
int unquote_many_words(const char **p, ...) _sentinel_;
int free_and_strdup(char **p, const char *s);
+
+int sethostname_idempotent(const char *s);