mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-27 02:01:42 +00:00
Renamed folders for consistency, using sim/athena/shared schema (#27)
Rename the following folders: hal/lib/Athena -> hal/lib/athena hal/lib/Desktop -> hal/lib/sim hal/lib/Shared -> hal/lib/shared wpilibc/Athena -> wpilibc/athena wpilibc/simulation -> wpilibc/sim Windows users may need to run gradlew clean after updating.
This commit is contained in:
committed by
Peter Johnson
parent
54092378e9
commit
e71f454b9d
55
hal/lib/athena/Semaphore.cpp
Normal file
55
hal/lib/athena/Semaphore.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) FIRST 2016. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include "HAL/Semaphore.hpp"
|
||||
|
||||
#include "Log.hpp"
|
||||
|
||||
// set the logging level
|
||||
TLogLevel semaphoreLogLevel = logDEBUG;
|
||||
|
||||
#define SEMAPHORE_LOG(level) \
|
||||
if (level > semaphoreLogLevel) \
|
||||
; \
|
||||
else \
|
||||
Log().Get(level)
|
||||
|
||||
extern "C" {
|
||||
|
||||
MUTEX_ID initializeMutexNormal() { return new priority_mutex; }
|
||||
|
||||
void deleteMutex(MUTEX_ID sem) { delete sem; }
|
||||
|
||||
/**
|
||||
* Lock the mutex, blocking until it's available.
|
||||
*/
|
||||
void takeMutex(MUTEX_ID mutex) { mutex->lock(); }
|
||||
|
||||
/**
|
||||
* Attempt to lock the mutex.
|
||||
* @return true if succeeded in locking the mutex, false otherwise.
|
||||
*/
|
||||
bool tryTakeMutex(MUTEX_ID mutex) { return mutex->try_lock(); }
|
||||
|
||||
/**
|
||||
* Unlock the mutex.
|
||||
* @return 0 for success, -1 for error. If -1, the error will be in errno.
|
||||
*/
|
||||
void giveMutex(MUTEX_ID mutex) { mutex->unlock(); }
|
||||
|
||||
MULTIWAIT_ID initializeMultiWait() { return new priority_condition_variable; }
|
||||
|
||||
void deleteMultiWait(MULTIWAIT_ID cond) { delete cond; }
|
||||
|
||||
void takeMultiWait(MULTIWAIT_ID cond, MUTEX_ID m) {
|
||||
std::unique_lock<priority_mutex> lock(*m);
|
||||
cond->wait(lock);
|
||||
}
|
||||
|
||||
void giveMultiWait(MULTIWAIT_ID cond) { cond->notify_all(); }
|
||||
|
||||
} // extern "C"
|
||||
Reference in New Issue
Block a user