shell: shell_log_backend: added check for msg allocation
When the message buffer cannot be allocated, dropped package counter should be incremented. Signed-off-by: Wojciech Slenska <wsl@trackunit.com>
This commit is contained in:
parent
14a03e90d5
commit
29400b18a6
1 changed files with 11 additions and 9 deletions
|
@ -123,7 +123,7 @@ static void dropped(const struct log_backend *const backend, uint32_t cnt)
|
||||||
atomic_add(&log_backend->control_block->dropped_cnt, cnt);
|
atomic_add(&log_backend->control_block->dropped_cnt, cnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void copy_to_pbuffer(struct mpsc_pbuf_buffer *mpsc_buffer,
|
static bool copy_to_pbuffer(struct mpsc_pbuf_buffer *mpsc_buffer,
|
||||||
union log_msg_generic *msg, uint32_t timeout)
|
union log_msg_generic *msg, uint32_t timeout)
|
||||||
{
|
{
|
||||||
size_t wlen;
|
size_t wlen;
|
||||||
|
@ -133,7 +133,7 @@ static void copy_to_pbuffer(struct mpsc_pbuf_buffer *mpsc_buffer,
|
||||||
dst = mpsc_pbuf_alloc(mpsc_buffer, wlen, K_MSEC(timeout));
|
dst = mpsc_pbuf_alloc(mpsc_buffer, wlen, K_MSEC(timeout));
|
||||||
if (!dst) {
|
if (!dst) {
|
||||||
/* No space to store the log */
|
/* No space to store the log */
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First word contains internal mpsc packet flags and when copying
|
/* First word contains internal mpsc packet flags and when copying
|
||||||
|
@ -148,6 +148,8 @@ static void copy_to_pbuffer(struct mpsc_pbuf_buffer *mpsc_buffer,
|
||||||
memcpy(dst_data, src_data, (wlen - hdr_wlen) * sizeof(uint32_t));
|
memcpy(dst_data, src_data, (wlen - hdr_wlen) * sizeof(uint32_t));
|
||||||
|
|
||||||
mpsc_pbuf_commit(mpsc_buffer, dst);
|
mpsc_pbuf_commit(mpsc_buffer, dst);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_log_msg(const struct shell *sh,
|
static void process_log_msg(const struct shell *sh,
|
||||||
|
@ -233,13 +235,13 @@ static void process(const struct log_backend *const backend,
|
||||||
if (IS_ENABLED(CONFIG_LOG_MODE_IMMEDIATE)) {
|
if (IS_ENABLED(CONFIG_LOG_MODE_IMMEDIATE)) {
|
||||||
process_log_msg(sh, log_output, msg, true, colors);
|
process_log_msg(sh, log_output, msg, true, colors);
|
||||||
} else {
|
} else {
|
||||||
copy_to_pbuffer(mpsc_buffer, msg,
|
if (copy_to_pbuffer(mpsc_buffer, msg, log_backend->timeout)) {
|
||||||
log_backend->timeout);
|
if (IS_ENABLED(CONFIG_MULTITHREADING)) {
|
||||||
|
signal = &sh->ctx->signals[SHELL_SIGNAL_LOG_MSG];
|
||||||
if (IS_ENABLED(CONFIG_MULTITHREADING)) {
|
k_poll_signal_raise(signal, 0);
|
||||||
signal =
|
}
|
||||||
&sh->ctx->signals[SHELL_SIGNAL_LOG_MSG];
|
} else {
|
||||||
k_poll_signal_raise(signal, 0);
|
dropped(backend, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue