blob: 9e4b2e9ac053b69bfecc7124204fa73a3fe84840 [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001#include "HAL/Task.hpp"
2
3#ifndef OK
4#define OK 0
5#endif /* OK */
6#ifndef ERROR
7#define ERROR (-1)
8#endif /* ERROR */
9
10#include <signal.h>
11
12STATUS verifyTaskID(TASK task) {
13 if (task != nullptr && pthread_kill(*task, 0) == 0) {
14 return OK;
15 } else {
16 return ERROR;
17 }
18}
19
20STATUS setTaskPriority(TASK task, int priority) {
21 int policy = 0;
22 struct sched_param param;
23
24 if (verifyTaskID(task) == OK &&
25 pthread_getschedparam(*task, &policy, &param) == 0) {
26 param.sched_priority = priority;
27 if (pthread_setschedparam(*task, SCHED_FIFO, &param) == 0) {
28 return OK;
29 }
30 else {
31 return ERROR;
32 }
33 }
34 else {
35 return ERROR;
36 }
37}
38
39STATUS getTaskPriority(TASK task, int* priority) {
40 int policy = 0;
41 struct sched_param param;
42
43 if (verifyTaskID(task) == OK &&
44 pthread_getschedparam(*task, &policy, &param) == 0) {
45 *priority = param.sched_priority;
46 return OK;
47 }
48 else {
49 return ERROR;
50 }
51}