|
|
@ -1,4 +1,4 @@ |
|
|
|
/* $OpenBSD: arc4random_solaris.h,v 1.3 2014/07/19 00:08:43 deraadt Exp $ */ |
|
|
|
/* $OpenBSD: arc4random_solaris.h,v 1.4 2014/07/19 13:02:28 bcook Exp $ */ |
|
|
|
|
|
|
|
/* |
|
|
|
* Copyright (c) 1996, David Mazieres <dm@uun.org> |
|
|
@ -21,24 +21,6 @@ |
|
|
|
/* |
|
|
|
* Stub functions for portability. |
|
|
|
*/ |
|
|
|
|
|
|
|
static inline int |
|
|
|
_rs_allocate(struct _rs **rsp, struct _rsx **rsxp) |
|
|
|
{ |
|
|
|
if ((*rsp = mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE, |
|
|
|
MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) |
|
|
|
return (-1); |
|
|
|
|
|
|
|
if ((*rsxp = mmap(NULL, sizeof(**rsxp) PROT_READ|PROT_WRITE, |
|
|
|
MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) { |
|
|
|
munmap(*rsxp, sizeof(**rsxp); |
|
|
|
return (-1); |
|
|
|
} |
|
|
|
|
|
|
|
_ARC4_ATFORK(_rs_forkhandler); |
|
|
|
return (0); |
|
|
|
} |
|
|
|
|
|
|
|
static volatile sig_atomic_t _rs_forked; |
|
|
|
|
|
|
|
static inline void |
|
|
@ -60,3 +42,20 @@ _rs_forkdetect(void) |
|
|
|
memset(rs, 0, sizeof(*rs)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static inline int |
|
|
|
_rs_allocate(struct _rs **rsp, struct _rsx **rsxp) |
|
|
|
{ |
|
|
|
if ((*rsp = mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE, |
|
|
|
MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) |
|
|
|
return (-1); |
|
|
|
|
|
|
|
if ((*rsxp = mmap(NULL, sizeof(**rsxp), PROT_READ|PROT_WRITE, |
|
|
|
MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) { |
|
|
|
munmap(*rsxp, sizeof(**rsxp)); |
|
|
|
return (-1); |
|
|
|
} |
|
|
|
|
|
|
|
_ARC4_ATFORK(_rs_forkhandler); |
|
|
|
return (0); |
|
|
|
} |