From: Daniel Dunbar Date: Sat, 5 May 2012 16:36:20 +0000 (+0000) Subject: [Support] Add sys::Process::GetRandomNumber(). X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9c69e6ae698f44703725eec8ff27630b6b81f0e3;p=oota-llvm.git [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 --- 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.