Files
2025-12-03 11:12:34 +08:00

96 lines
2.7 KiB
C

#ifndef TASK_PRIORITY_H
#define TASK_PRIORITY_H
#include "os/os_api.h"
struct task_info {
const char *name;
u8 prio;
u8 core;
u16 stack_size;
u16 qsize;
};
typedef OS_SEM sem_t;
typedef OS_MUTEX mutex_t;
/* --------------------------------------------------------------------------*/
/**
* @brief 创建任务
*
* @param task 服务函数
* @param p 服务函数传参
* @param name 任务名
*
* @return 0:成功,其他:错误码
*/
/* ----------------------------------------------------------------------------*/
int task_create(void (*task)(void *p), void *p, const char *name);
int __task_create(void (*task)(void *p), void *p, const char *name, u8 prio);
/* --------------------------------------------------------------------------*/
/**
* @brief 删除任务
*
* @param name 任务名
*
* @return 0:成功,其他:错误码
*/
/* ----------------------------------------------------------------------------*/
int task_kill(const char *name);
int task_delete(const char *name, OS_SEM *sem);
void task_info_init(void);
void task_info_add(TaskHandle_t task);
void task_info_del(const char *name);
void task_info_update_runtime(TaskHandle_t old_task, TaskHandle_t new_task);
void task_info_reset(void);
void task_info_output(int size);
void task_info_output_debug(void);
u32 task_info_idle_percentage(void);
void *task_info_list_head_get(void);
int os_task_priority(const char *name);
int os_cpu_usage(const char *task_name, int *usage);
int os_hw_sem_pend(OS_SEM *sem, int timeout, const char *hw_name);
int os_hw_sem_post(OS_SEM *sem, const char *hw_name);
int os_get_hw_usage(const char *hw_name);
int task_info_get_pc_addr(const char *task_name, u32 *pc_addr);
#define SIMPLE_TASK_INFO_NAME_MAX_LEN 16
typedef struct __simple_task_info {
char task_name[SIMPLE_TASK_INFO_NAME_MAX_LEN]; // 任务名
u32 stack_used; // 已使用栈大小
u32 stack_max; // 最大栈
u32 task_usage; // CPU占用
} SIMPLE_TASK_INFO;
/* --------------------------------------------------------------------------*/
/**
* @brief 获取记录的任务个数
*
* @result
*/
/* ----------------------------------------------------------------------------*/
u32 get_task_info_list_num(void);
/* --------------------------------------------------------------------------*/
/**
* @brief 获取简易的任务信息
*
* @param task_info_list
* @param task_info_list_len
*
* @result task_info_list的有效长度,小于等于task_info_list_len
*/
/* ----------------------------------------------------------------------------*/
u16 simple_task_info_list_get(SIMPLE_TASK_INFO *task_info_list, u32 task_info_list_len);
#endif