mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
Implemented setTaskPriority() and getTaskPriority() in Task HAL API Removed all other unimplemented functions in HAL and removed spawnTask() Replaced instances of pthread_t* with TASK typedef Removed unused HAL error constants and removed commented-out classes and functions in wpilibj's HALLibrary Changed Task class API to match the construction semantics of a std::thread Change-Id: I3bc951a3da90d24c5589fae4d1ca2bb60225c873
26 lines
866 B
C++
26 lines
866 B
C++
#include "HAL/HAL.hpp"
|
|
#include <atomic>
|
|
|
|
/**
|
|
* Create and launch a task.
|
|
* @param name The name of the task. "FRC_" will be prepended to the task name.
|
|
* @param function The address of the function to run as the new task.
|
|
* @param args A parameter pack of arguments to pass to the function.
|
|
* @param priority The VxWorks priority for the task.
|
|
* @param stackSize The size of the stack for the task
|
|
*/
|
|
template <class Function, class... Args>
|
|
Task::Task(const char* name, Function&& function, Args&&... args) {
|
|
m_taskName = "FRC_";
|
|
m_taskName += name;
|
|
|
|
std::cout << "[HAL] Starting task " << m_taskName << "..." << std::endl;
|
|
|
|
m_thread = std::thread(function, args...);
|
|
SetPriority(kDefaultPriority);
|
|
|
|
static std::atomic<int32_t> instances{0};
|
|
instances++;
|
|
HALReport(HALUsageReporting::kResourceType_Task, instances, 0, m_taskName.c_str());
|
|
}
|