diff options
author | Marcos Pividori <mpividori@google.com> | 2016-12-13 17:45:53 +0000 |
---|---|---|
committer | Marcos Pividori <mpividori@google.com> | 2016-12-13 17:45:53 +0000 |
commit | 6e3d885c791b5d6f2120c0ec345b5604851709d2 (patch) | |
tree | 69fe5be3bd9e977203fd14d66f9a1a7ce9d9fb7f /llvm/lib/Fuzzer/FuzzerDriver.cpp | |
parent | 463f8bdd0b85ea19177ff5e22d2fca34859b2234 (diff) | |
download | bcm5719-llvm-6e3d885c791b5d6f2120c0ec345b5604851709d2.tar.gz bcm5719-llvm-6e3d885c791b5d6f2120c0ec345b5604851709d2.zip |
[libFuzzer] Properly use unsigned for workers, jobs and NumberOfCpuCores.
std::thread::hardware_concurrency() returns an unsigned, so I modify
NumberOfCpuCores() to return unsigned too.
The number of cpus is used to define the number of workers, so I decided
to update the worker and jobs flags to be declared as unsigned too.
Differential Revision: https://reviews.llvm.org/D27685
llvm-svn: 289559
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerDriver.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerDriver.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerDriver.cpp b/llvm/lib/Fuzzer/FuzzerDriver.cpp index 1ff822c6881..f4f1a4d47d1 100644 --- a/llvm/lib/Fuzzer/FuzzerDriver.cpp +++ b/llvm/lib/Fuzzer/FuzzerDriver.cpp @@ -200,10 +200,10 @@ static void PulseThread() { } } -static void WorkerThread(const std::string &Cmd, std::atomic<int> *Counter, - int NumJobs, std::atomic<bool> *HasErrors) { +static void WorkerThread(const std::string &Cmd, std::atomic<unsigned> *Counter, + unsigned NumJobs, std::atomic<bool> *HasErrors) { while (true) { - int C = (*Counter)++; + unsigned C = (*Counter)++; if (C >= NumJobs) break; std::string Log = "fuzz-" + std::to_string(C) + ".log"; std::string ToRun = Cmd + " > " + Log + " 2>&1\n"; @@ -213,7 +213,7 @@ static void WorkerThread(const std::string &Cmd, std::atomic<int> *Counter, if (ExitCode != 0) *HasErrors = true; std::lock_guard<std::mutex> Lock(Mu); - Printf("================== Job %d exited with exit code %d ============\n", + Printf("================== Job %u exited with exit code %d ============\n", C, ExitCode); fuzzer::CopyFileToErr(Log); } @@ -231,14 +231,14 @@ std::string CloneArgsWithoutX(const std::vector<std::string> &Args, } static int RunInMultipleProcesses(const std::vector<std::string> &Args, - int NumWorkers, int NumJobs) { - std::atomic<int> Counter(0); + unsigned NumWorkers, unsigned NumJobs) { + std::atomic<unsigned> Counter(0); std::atomic<bool> HasErrors(false); std::string Cmd = CloneArgsWithoutX(Args, "jobs", "workers"); std::vector<std::thread> V; std::thread Pulse(PulseThread); Pulse.detach(); - for (int i = 0; i < NumWorkers; i++) + for (unsigned i = 0; i < NumWorkers; i++) V.push_back(std::thread(WorkerThread, Cmd, &Counter, NumJobs, &HasErrors)); for (auto &T : V) T.join(); @@ -379,7 +379,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) { if (Flags.jobs > 0 && Flags.workers == 0) { Flags.workers = std::min(NumberOfCpuCores() / 2, Flags.jobs); if (Flags.workers > 1) - Printf("Running %d workers\n", Flags.workers); + Printf("Running %u workers\n", Flags.workers); } if (Flags.workers > 0 && Flags.jobs > 0) |