[Support] Add sys::Process::GetRandomNumber().

- Primitive API, but we rarely have need for random numbers.

llvm-svn: 156237
This commit is contained in:
Daniel Dunbar 2012-05-05 16:36:20 +00:00
parent 407a85e7a6
commit b57ddd4e29
2 changed files with 14 additions and 1 deletions

View File

@ -1,4 +1,4 @@
//===- llvm/Support/Process.h ------------------------------------*- C++ -*-===//
//===- llvm/Support/Process.h -----------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@ -142,6 +142,10 @@ namespace sys {
/// Resets the terminals colors, or returns an escape sequence to do so.
static const char *ResetColor();
/// Get the result of a process wide random number generator. The
/// generator will be automatically seeded in non-deterministic fashion.
static unsigned GetRandomNumber();
/// @}
};
}

View File

@ -22,6 +22,15 @@ using namespace sys;
//=== independent code.
//===----------------------------------------------------------------------===//
unsigned llvm::sys::Process::GetRandomNumber() {
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#else
static int x = (::srand(::time(NULL)), 0);
return rand();
#endif
}
}
// Include the platform-specific parts of this class.