Select the types of activity you want to include in your feed.
[xtrace] Convert All Source Files To CPP
* Changed all sources files from `c` to `cpp`. * Updated header files to include `extern "C"`. * Added a few more C-styled casts. * Fail build if hook struct is not implemented for arch. * Misc formatting.
···4949 return expected;
5050};
51515252+extern "C"
5253void xtrace_lock_lock(xtrace_lock_t* _lock) {
5354 xtrace_lock_internal_t* lock = (xtrace_lock_internal_t*)_lock;
5455···7071 xtrace_lock_debug("going to wait");
7172 // do the actual sleeping
7273 // we expect `xtrace_lock_state_locked_contended` because we don't want to sleep if it's not contended
7373- __linux_futex_reterr(&lock->state, FUTEX_WAIT, xtrace_lock_state_locked_contended, NULL, 0, 0);
7474+ __linux_futex_reterr((int*)&lock->state, FUTEX_WAIT, xtrace_lock_state_locked_contended, nullptr, 0, 0);
7475 xtrace_lock_debug("awoken");
7576 }
7677···8384 xtrace_lock_debug("lock acquired");
8485};
85868787+extern "C"
8688void xtrace_lock_unlock(xtrace_lock_t* _lock) {
8789 xtrace_lock_internal_t* lock = (xtrace_lock_internal_t*)_lock;
8890···9597 // if it was previously contended, then we need to wake someone up
9698 if (prev == xtrace_lock_state_locked_contended) {
9799 xtrace_lock_debug("waking someone up");
9898- __linux_futex_reterr(&lock->state, FUTEX_WAKE, 1, NULL, 0, 0);
100100+ __linux_futex_reterr((int*)&lock->state, FUTEX_WAKE, 1, NULL, 0, 0);
99101 }
100102};
101103···123125 xtrace_once_state_completed = 3,
124126};
125127128128+extern "C"
126129void xtrace_once(xtrace_once_t* _once, xtrace_once_callback callback) {
127130 xtrace_once_internal_t* once = (xtrace_once_internal_t*)_once;
128131···152155 case xtrace_once_state_triggered_contended: {
153156 xtrace_once_debug("waking up all waiters...");
154157 // otherwise, we have to wake someone up
155155- __linux_futex_reterr(&once->state, FUTEX_WAKE, INT_MAX, NULL, 0, 0);
158158+ __linux_futex_reterr((int*)&once->state, FUTEX_WAKE, INT_MAX, NULL, 0, 0);
156159 } break;
157160 }
158161···184187 // somebody is already performing the callback and there are already waiters;
185188 // let's wait
186189 xtrace_once_debug("someone is already performing the callback with waiters; going to wait...");
187187- __linux_futex_reterr(&once->state, FUTEX_WAIT, prev, NULL, 0, 0);
190190+ __linux_futex_reterr((int*)&once->state, FUTEX_WAIT, prev, NULL, 0, 0);
188191189192 xtrace_once_debug("woken up");
190193
+2-2
src/xtrace/lock.h
···99// we also have to implement our own locks, because we can't rely on libplatform's or libpthread's locks
1010// so we implement our own on top of Linux futexes
11111212-XTRACE_DECLARATIONS_BEGIN;
1212+XTRACE_DECLARATIONS_C_BEGIN
13131414//
1515// lock
···48484949void xtrace_once(xtrace_once_t* once, xtrace_once_callback callback);
50505151-XTRACE_DECLARATIONS_END;
5151+XTRACE_DECLARATIONS_C_END
52525353#endif // _XTRACE_LOCK_H_