From 9c69e6ae698f44703725eec8ff27630b6b81f0e3 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 5 May 2012 16:36:20 +0000 Subject: [PATCH] [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 --- include/llvm/Support/Process.h | 6 +++++- lib/Support/Process.cpp | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/llvm/Support/Process.h b/include/llvm/Support/Process.h index d796b7906d3..91b92788f2c 100644 --- a/include/llvm/Support/Process.h +++ b/include/llvm/Support/Process.h @@ -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(); /// @} }; } diff --git a/lib/Support/Process.cpp b/lib/Support/Process.cpp index 88ca7c3f220..c65cb454046 100644 --- a/lib/Support/Process.cpp +++ b/lib/Support/Process.cpp @@ -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.