+
+int
+getentropy(__unused struct proc * p, struct getentropy_args *gap, __unused int * ret) {
+ user_addr_t user_addr;
+ uint32_t user_size;
+ char buffer[256];
+
+ user_addr = (vm_map_offset_t)gap->buffer;
+ user_size = gap->size;
+ /* Can't request more than 256 random bytes
+ * at once. Complying with openbsd getentropy()
+ */
+ if (user_size > sizeof(buffer)) {
+ return EINVAL;
+ }
+ read_random(buffer, user_size);
+ return copyout(buffer, user_addr, user_size);
+}