GCC Code Coverage Report


Directory: ./
File: Os/Posix/Mutex.cpp
Date: 2026-09-03 21:13:48
Exec Total Coverage
Lines: 23 23 100.0%
Functions: 5 5 100.0%
Branches: 7 14 50.0%

Line Branch Exec Source
1 // ======================================================================
2 // \title Os/Posix/Mutex.cpp
3 // \brief Posix implementation for Os::Mutex
4 // ======================================================================
5 #include <Fw/Types/Assert.hpp>
6 #include <Os/Posix/Mutex.hpp>
7 #include <Os/Posix/error.hpp>
8
9 namespace Os {
10 namespace Posix {
11 namespace Mutex {
12
13 8572 PosixMutex::PosixMutex() : Os::MutexInterface(), m_handle() {
14 // set attributes
15 8572 pthread_mutexattr_t attribute;
16
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8572 times.
8572 int status = pthread_mutexattr_init(&attribute);
17 8572 FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status));
18
19 // set to normal mutex type
20
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8572 times.
8572 status = pthread_mutexattr_settype(&attribute, PTHREAD_MUTEX_ERRORCHECK);
21 8572 FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status));
22
23 // set to check for priority inheritance
24
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8572 times.
8572 status = pthread_mutexattr_setprotocol(&attribute, PTHREAD_PRIO_INHERIT);
25 8572 FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status));
26
27
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 8572 times.
8572 status = pthread_mutex_init(&this->m_handle.m_mutex_descriptor, &attribute);
28 8572 FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status));
29 8572 }
30
31 17144 PosixMutex::~PosixMutex() {
32
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 8572 times.
17144 int status = pthread_mutex_destroy(&this->m_handle.m_mutex_descriptor);
33 17144 FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status));
34 17144 }
35
36 16083915 PosixMutex::Status PosixMutex::take() {
37
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 20560790 times.
16083915 int status = pthread_mutex_lock(&this->m_handle.m_mutex_descriptor);
38 17399149 return Os::Posix::posix_status_to_mutex_status(status);
39 }
40
41 15337732 PosixMutex::Status PosixMutex::release() {
42
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 20896264 times.
15337732 int status = pthread_mutex_unlock(&this->m_handle.m_mutex_descriptor);
43 18494286 return Os::Posix::posix_status_to_mutex_status(status);
44 }
45
46 12 MutexHandle* PosixMutex::getHandle() {
47 12 return &this->m_handle;
48 }
49 } // namespace Mutex
50 } // namespace Posix
51 } // namespace Os
52