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

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156237 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2012-05-05 16:36:20 +00:00
parent e0b0e7b295
commit 9c69e6ae69
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.