mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-17 17:03:33 +08:00
Load monitor: report and log processes low on stack
This commit is contained in:
committed by
Lorenz Meier
parent
b0ee5256d5
commit
62103be7ba
@@ -111,6 +111,7 @@
|
||||
#include <uORB/topics/vehicle_land_detected.h>
|
||||
#include <uORB/topics/commander_state.h>
|
||||
#include <uORB/topics/cpuload.h>
|
||||
#include <uORB/topics/low_stack.h>
|
||||
|
||||
#include <systemlib/systemlib.h>
|
||||
#include <systemlib/param/param.h>
|
||||
@@ -1222,6 +1223,7 @@ int sdlog2_thread_main(int argc, char *argv[])
|
||||
struct vehicle_land_detected_s land_detected;
|
||||
struct cpuload_s cpuload;
|
||||
struct vehicle_gps_position_s dual_gps_pos;
|
||||
struct low_stack_s low_stack;
|
||||
} buf;
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
@@ -1284,6 +1286,7 @@ int sdlog2_thread_main(int argc, char *argv[])
|
||||
struct log_RPL6_s log_RPL6;
|
||||
struct log_LOAD_s log_LOAD;
|
||||
struct log_DPRS_s log_DPRS;
|
||||
struct log_STCK_s log_STCK;
|
||||
} body;
|
||||
} log_msg = {
|
||||
LOG_PACKET_HEADER_INIT(0)
|
||||
@@ -1334,6 +1337,7 @@ int sdlog2_thread_main(int argc, char *argv[])
|
||||
int commander_state_sub;
|
||||
int cpuload_sub;
|
||||
int diff_pres_sub;
|
||||
int low_stack_sub;
|
||||
} subs;
|
||||
|
||||
subs.cmd_sub = -1;
|
||||
@@ -1377,6 +1381,7 @@ int sdlog2_thread_main(int argc, char *argv[])
|
||||
subs.commander_state_sub = -1;
|
||||
subs.cpuload_sub = -1;
|
||||
subs.diff_pres_sub = -1;
|
||||
subs.low_stack_sub = -1;
|
||||
|
||||
/* add new topics HERE */
|
||||
|
||||
@@ -2319,7 +2324,14 @@ int sdlog2_thread_main(int argc, char *argv[])
|
||||
log_msg.msg_type = LOG_LOAD_MSG;
|
||||
log_msg.body.log_LOAD.cpu_load = buf.cpuload.load;
|
||||
LOGBUFFER_WRITE_AND_COUNT(LOAD);
|
||||
}
|
||||
|
||||
/* --- STACK --- */
|
||||
if (copy_if_updated(ORB_ID(low_stack), &subs.low_stack_sub, &buf.low_stack)) {
|
||||
log_msg.msg_type = LOG_STCK_MSG;
|
||||
log_msg.body.log_STCK.stack_free = buf.low_stack.stack_free;
|
||||
strncpy(log_msg.body.log_STCK.task_name, (char*)buf.low_stack.task_name, sizeof(log_msg.body.log_STCK.task_name));
|
||||
LOGBUFFER_WRITE_AND_COUNT(STCK);
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&logbuffer_mutex);
|
||||
|
||||
@@ -634,6 +634,13 @@ struct log_DPRS_s {
|
||||
float temperature;
|
||||
};
|
||||
|
||||
/* --- LOW STACK --- */
|
||||
#define LOG_STCK_MSG 63
|
||||
struct log_STCK_s {
|
||||
char task_name[16];
|
||||
uint16_t stack_free;
|
||||
};
|
||||
|
||||
/********** SYSTEM MESSAGES, ID > 0x80 **********/
|
||||
|
||||
/* --- TIME - TIME STAMP --- */
|
||||
@@ -724,6 +731,7 @@ static const struct log_format_s log_formats[] = {
|
||||
LOG_FORMAT(LAND, "B", "Landed"),
|
||||
LOG_FORMAT(LOAD, "f", "CPU"),
|
||||
LOG_FORMAT(DPRS, "Qffff", "errors,DPRESraw,DPRES,DPRESmax,Temp"),
|
||||
LOG_FORMAT(STCK, "NH", "Task,Free"),
|
||||
/* system-level messages, ID >= 0x80 */
|
||||
/* FMT: don't write format of format message, it's useless */
|
||||
LOG_FORMAT(TIME, "Q", "StartTime"),
|
||||
|
||||
Reference in New Issue
Block a user