diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2012-05-05 16:36:20 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2012-05-05 16:36:20 +0000 |
| commit | b57ddd4e292cb3a2ef8d2ded445c5b4b79f7c864 (patch) | |
| tree | 0eac2743805d5330d4ba492403aa36ea130d5790 | |
| parent | 407a85e7a6c889ea4f561b7b0daee30d4bb0d865 (diff) | |
| download | bcm5719-llvm-b57ddd4e292cb3a2ef8d2ded445c5b4b79f7c864.tar.gz bcm5719-llvm-b57ddd4e292cb3a2ef8d2ded445c5b4b79f7c864.zip | |
[Support] Add sys::Process::GetRandomNumber().
- Primitive API, but we rarely have need for random numbers.
llvm-svn: 156237
| -rw-r--r-- | llvm/include/llvm/Support/Process.h | 6 | ||||
| -rw-r--r-- | llvm/lib/Support/Process.cpp | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/llvm/include/llvm/Support/Process.h b/llvm/include/llvm/Support/Process.h index d796b7906d3..91b92788f2c 100644 --- a/llvm/include/llvm/Support/Process.h +++ b/llvm/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/llvm/lib/Support/Process.cpp b/llvm/lib/Support/Process.cpp index 88ca7c3f220..c65cb454046 100644 --- a/llvm/lib/Support/Process.cpp +++ b/llvm/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. |

