Tidy up some drift in runtime logging, close #1380.
This commit is contained in:
parent
7fd62bb2b5
commit
5930463faa
|
@ -3,18 +3,20 @@
|
||||||
#define RUST_LOG_H
|
#define RUST_LOG_H
|
||||||
|
|
||||||
const uint32_t log_err = 0;
|
const uint32_t log_err = 0;
|
||||||
const uint32_t log_note = 1;
|
const uint32_t log_warn = 1;
|
||||||
|
const uint32_t log_info = 2;
|
||||||
|
const uint32_t log_debug = 3;
|
||||||
|
|
||||||
#define LOG(task, field, ...) \
|
#define LOG(task, field, ...) \
|
||||||
DLOG_LVL(log_note, task, task->sched, field, __VA_ARGS__)
|
DLOG_LVL(log_debug, task, task->sched, field, __VA_ARGS__)
|
||||||
#define LOG_ERR(task, field, ...) \
|
#define LOG_ERR(task, field, ...) \
|
||||||
DLOG_LVL(log_err, task, task->sched, field, __VA_ARGS__)
|
DLOG_LVL(log_err, task, task->sched, field, __VA_ARGS__)
|
||||||
#define DLOG(sched, field, ...) \
|
#define DLOG(sched, field, ...) \
|
||||||
DLOG_LVL(log_note, NULL, sched, field, __VA_ARGS__)
|
DLOG_LVL(log_debug, NULL, sched, field, __VA_ARGS__)
|
||||||
#define DLOG_ERR(sched, field, ...) \
|
#define DLOG_ERR(sched, field, ...) \
|
||||||
DLOG_LVL(log_err, NULL, sched, field, __VA_ARGS__)
|
DLOG_LVL(log_err, NULL, sched, field, __VA_ARGS__)
|
||||||
#define LOGPTR(sched, msg, ptrval) \
|
#define LOGPTR(sched, msg, ptrval) \
|
||||||
DLOG_LVL(log_note, NULL, sched, mem, "%s 0x%" PRIxPTR, msg, ptrval)
|
DLOG_LVL(log_debug, NULL, sched, mem, "%s 0x%" PRIxPTR, msg, ptrval)
|
||||||
#define DLOG_LVL(lvl, task, sched, field, ...) \
|
#define DLOG_LVL(lvl, task, sched, field, ...) \
|
||||||
do { \
|
do { \
|
||||||
rust_scheduler* _d_ = sched; \
|
rust_scheduler* _d_ = sched; \
|
||||||
|
@ -24,7 +26,7 @@ const uint32_t log_note = 1;
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define KLOG(k, field, ...) \
|
#define KLOG(k, field, ...) \
|
||||||
KLOG_LVL(k, field, log_note, __VA_ARGS__)
|
KLOG_LVL(k, field, log_debug, __VA_ARGS__)
|
||||||
#define KLOG_LVL(k, field, lvl, ...) \
|
#define KLOG_LVL(k, field, lvl, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (log_rt_##field >= lvl) { \
|
if (log_rt_##field >= lvl) { \
|
||||||
|
|
|
@ -19,7 +19,7 @@ rust_scheduler::rust_scheduler(rust_kernel *kernel,
|
||||||
ref_count(1),
|
ref_count(1),
|
||||||
interrupt_flag(0),
|
interrupt_flag(0),
|
||||||
_log(srv, this),
|
_log(srv, this),
|
||||||
log_lvl(log_note),
|
log_lvl(log_debug),
|
||||||
srv(srv),
|
srv(srv),
|
||||||
// TODO: calculate a per scheduler name.
|
// TODO: calculate a per scheduler name.
|
||||||
name("main"),
|
name("main"),
|
||||||
|
@ -203,12 +203,12 @@ rust_scheduler::schedule_task(int id) {
|
||||||
|
|
||||||
void
|
void
|
||||||
rust_scheduler::log_state() {
|
rust_scheduler::log_state() {
|
||||||
if (log_rt_task < log_note) return;
|
if (log_rt_task < log_debug) return;
|
||||||
|
|
||||||
if (!running_tasks.is_empty()) {
|
if (!running_tasks.is_empty()) {
|
||||||
log(NULL, log_note, "running tasks:");
|
log(NULL, log_debug, "running tasks:");
|
||||||
for (size_t i = 0; i < running_tasks.length(); i++) {
|
for (size_t i = 0; i < running_tasks.length(); i++) {
|
||||||
log(NULL, log_note, "\t task: %s @0x%" PRIxPTR
|
log(NULL, log_debug, "\t task: %s @0x%" PRIxPTR
|
||||||
" remaining: %" PRId64 " us",
|
" remaining: %" PRId64 " us",
|
||||||
running_tasks[i]->name,
|
running_tasks[i]->name,
|
||||||
running_tasks[i],
|
running_tasks[i],
|
||||||
|
@ -217,9 +217,9 @@ rust_scheduler::log_state() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!blocked_tasks.is_empty()) {
|
if (!blocked_tasks.is_empty()) {
|
||||||
log(NULL, log_note, "blocked tasks:");
|
log(NULL, log_debug, "blocked tasks:");
|
||||||
for (size_t i = 0; i < blocked_tasks.length(); i++) {
|
for (size_t i = 0; i < blocked_tasks.length(); i++) {
|
||||||
log(NULL, log_note, "\t task: %s @0x%" PRIxPTR ", blocked on: 0x%"
|
log(NULL, log_debug, "\t task: %s @0x%" PRIxPTR ", blocked on: 0x%"
|
||||||
PRIxPTR " '%s'",
|
PRIxPTR " '%s'",
|
||||||
blocked_tasks[i]->name, blocked_tasks[i],
|
blocked_tasks[i]->name, blocked_tasks[i],
|
||||||
blocked_tasks[i]->cond, blocked_tasks[i]->cond_name);
|
blocked_tasks[i]->cond, blocked_tasks[i]->cond_name);
|
||||||
|
@ -227,9 +227,9 @@ rust_scheduler::log_state() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dead_tasks.is_empty()) {
|
if (!dead_tasks.is_empty()) {
|
||||||
log(NULL, log_note, "dead tasks:");
|
log(NULL, log_debug, "dead tasks:");
|
||||||
for (size_t i = 0; i < dead_tasks.length(); i++) {
|
for (size_t i = 0; i < dead_tasks.length(); i++) {
|
||||||
log(NULL, log_note, "\t task: %s 0x%" PRIxPTR,
|
log(NULL, log_debug, "\t task: %s 0x%" PRIxPTR,
|
||||||
dead_tasks[i]->name, dead_tasks[i]);
|
dead_tasks[i]->name, dead_tasks[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,15 @@ struct rust_scheduler : public kernel_owned<rust_scheduler>,
|
||||||
|
|
||||||
// Fields known only by the runtime:
|
// Fields known only by the runtime:
|
||||||
rust_log _log;
|
rust_log _log;
|
||||||
|
|
||||||
|
// NB: this is used to filter *runtime-originating* debug
|
||||||
|
// logging, on a per-scheduler basis. It's not likely what
|
||||||
|
// you want to expose to the user in terms of per-task
|
||||||
|
// or per-module logging control. By default all schedulers
|
||||||
|
// are set to debug-level logging here, and filtered by
|
||||||
|
// runtime category using the pseudo-modules ::rt::foo.
|
||||||
uint32_t log_lvl;
|
uint32_t log_lvl;
|
||||||
|
|
||||||
rust_srv *srv;
|
rust_srv *srv;
|
||||||
const char *const name;
|
const char *const name;
|
||||||
|
|
||||||
|
|
|
@ -555,8 +555,6 @@ shape_cmp_type(int8_t *result, const type_desc *tydesc,
|
||||||
extern "C" void
|
extern "C" void
|
||||||
shape_log_type(const type_desc *tydesc, uint8_t *data, uint32_t level) {
|
shape_log_type(const type_desc *tydesc, uint8_t *data, uint32_t level) {
|
||||||
rust_task *task = rust_scheduler::get_task();
|
rust_task *task = rust_scheduler::get_task();
|
||||||
if (task->sched->log_lvl < level)
|
|
||||||
return; // TODO: Don't evaluate at all?
|
|
||||||
|
|
||||||
shape::arena arena;
|
shape::arena arena;
|
||||||
shape::type_param *params =
|
shape::type_param *params =
|
||||||
|
|
Loading…
Reference in a new issue