zephyr/samples/logger-hook
Andrew Boie 10c41eea00 samples/logger-hook: fix usage of ring buffer
- Ring buffers provide no concurrency control. Since the ring buffer
is being installed as the system log hook, multiple contexts may try
to write to it simultaneously. Lock interrupts to prevent corruption
of the ring buffer.

- NULL pointers were being passed into sys_ring_buf_get() for the
'type' and 'value' parameters, causing undesirable behavior when they
are dereferenced.

- The 'size32' parameter of sys_ring_buf_put() was being passed the
number of bytes, not the number of 32-bit words.

- The 'size32' parameter of sys_ring_buf_get() was not bring correctly
initialized the size of the destination buffer in terms of 32-bit
words. This has been fixed. There is no longer a need to query the
API twice.

Issue: ZEP-1789
Change-Id: I96f9cc74f3711297727b4c5114b6c93510f4a8c1
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2017-03-07 12:40:23 +00:00
..
src samples/logger-hook: fix usage of ring buffer 2017-03-07 12:40:23 +00:00
Makefile
README.txt build: abstract emulation and replace qemu goal with run 2017-01-10 20:20:47 +00:00
prj.conf
sample.tc
testcase.ini

README.txt

Title: Logger application hook sample

Description:

A simple example on how to use logger hook in order to redirect the logger
output to various backends.
In this case, the logger is sending the output to ringbuf,
logger output can be sent to a driver such as UART / USIF etc. as well.

--------------------------------------------------------------------------------

Building and Running Project:

This unified project outputs to the console.
It can be built and executed on QEMU as follows:

    make run

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample Output:

[sample-unified] [ERR] main: SYS LOG ERR is ACTIVE
[sample-unified] [WRN] main: SYS LOG WRN is ACTIVE
[sample-unified] [INF] main: SYS LOG INF is ACTIVE