GCC Code Coverage Report


Directory: cvmfs/
File: cvmfs/util/concurrency.cc
Date: 2026-10-11 02:40:02
Exec Total Coverage
Lines: 34 36 94.4%
Branches: 11 20 55.0%

Line Branch Exec Source
1 /**
2 * This file is part of the CernVM File System.
3 */
4
5
6 #include "util/concurrency.h"
7
8 #include <pthread.h>
9 #include <unistd.h>
10
11 #include <cassert>
12 #include <cstddef>
13
14 #include "util/logging.h"
15 #include "util/mutex.h"
16
17 #ifdef CVMFS_NAMESPACE_GUARD
18 namespace CVMFS_NAMESPACE_GUARD {
19 #endif
20
21 1075 unsigned int GetNumberOfCpuCores() {
22 1075 const int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
23
24
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1075 times.
1075 if (numCPU <= 0) {
25 ✗ LogCvmfs(kLogSpooler, kLogWarning,
26 "Unable to determine the available "
27 "number of processors in the system... "
28 "falling back to default '%d'",
29 kFallbackNumberOfCpus);
30 ✗ return kFallbackNumberOfCpus;
31 }
32
33 1075 return static_cast<unsigned int>(numCPU);
34 }
35
36 59260 Signal::Signal() : fired_(false) {
37 59260 int retval = pthread_mutex_init(&lock_, NULL);
38
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59260 times.
59260 assert(retval == 0);
39 59260 retval = pthread_cond_init(&signal_, NULL);
40
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59260 times.
59260 assert(retval == 0);
41 59260 }
42
43
44 59260 Signal::~Signal() {
45
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 59260 times.
59260 assert(IsSleeping());
46 59260 int res = pthread_cond_destroy(&signal_);
47
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59260 times.
59260 assert(0 == res);
48 59260 res = pthread_mutex_destroy(&lock_);
49
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59260 times.
59260 assert(0 == res);
50 59260 }
51
52
53 59326 void Signal::Wait() {
54 59326 const MutexLockGuard guard(lock_);
55
2/2
✓ Branch 0 taken 59224 times.
✓ Branch 1 taken 59326 times.
118550 while (!fired_) {
56
1/2
✓ Branch 1 taken 59224 times.
✗ Branch 2 not taken.
59224 const int retval = pthread_cond_wait(&signal_, &lock_);
57
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59224 times.
59224 assert(retval == 0);
58 }
59 59326 fired_ = false;
60 59326 }
61
62
63 59326 void Signal::Wakeup() {
64 59326 const MutexLockGuard guard(lock_);
65 59326 fired_ = true;
66 59326 const int retval = pthread_cond_broadcast(&signal_);
67
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 59326 times.
59326 assert(retval == 0);
68 59326 }
69
70 59314 bool Signal::IsSleeping() {
71 59314 const MutexLockGuard guard(lock_);
72 118628 return fired_ == false;
73 59314 }
74
75 #ifdef CVMFS_NAMESPACE_GUARD
76 } // namespace CVMFS_NAMESPACE_GUARD
77 #endif
78