Files
allwpilib/hal/lib/Athena/Task.cpp
Peter Johnson 351e8599ac HAL: Use extern "C" in implementation files.
This turns accidental parameter mismatches between header and implementation
into compiler errors.

Change-Id: Ic26fabb82b2fd5f79407a11435cdbd35348af15f
2016-01-02 09:49:35 -08:00

56 lines
997 B
C++

#include "HAL/Task.hpp"
#ifndef OK
#define OK 0
#endif /* OK */
#ifndef ERROR
#define ERROR (-1)
#endif /* ERROR */
#include <signal.h>
extern "C" {
STATUS verifyTaskID(TASK task) {
if (task != nullptr && pthread_kill(*task, 0) == 0) {
return OK;
} else {
return ERROR;
}
}
STATUS setTaskPriority(TASK task, int priority) {
int policy = 0;
struct sched_param param;
if (verifyTaskID(task) == OK &&
pthread_getschedparam(*task, &policy, &param) == 0) {
param.sched_priority = priority;
if (pthread_setschedparam(*task, SCHED_FIFO, &param) == 0) {
return OK;
}
else {
return ERROR;
}
}
else {
return ERROR;
}
}
STATUS getTaskPriority(TASK task, int* priority) {
int policy = 0;
struct sched_param param;
if (verifyTaskID(task) == OK &&
pthread_getschedparam(*task, &policy, &param) == 0) {
*priority = param.sched_priority;
return OK;
}
else {
return ERROR;
}
}
} // extern "C"