diff options
author | Tom Rini <trini@konsulko.com> | 2021-03-15 08:41:14 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-03-15 08:41:14 -0400 |
commit | 1876b390f31afca15de334e499aa071b0bf64a44 (patch) | |
tree | b22356b605c5881781ab4ea88743054558753149 /doc/develop/logging.rst | |
parent | c57ec2c2bab00c02a457ca70624c1333c60c2ec0 (diff) | |
parent | 7f047b4f5b4c86b53dbdd002322dcbf007f80623 (diff) |
Merge branch '2021-03-12-assorted-improvements' into next
- More log enhancements
- A few warning fixes in some cases
- Secure Channel Protocol 03 (SCP03) support for TEEs
Diffstat (limited to 'doc/develop/logging.rst')
-rw-r--r-- | doc/develop/logging.rst | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/doc/develop/logging.rst b/doc/develop/logging.rst index 60c18c5b3a..f4e925048e 100644 --- a/doc/develop/logging.rst +++ b/doc/develop/logging.rst @@ -96,16 +96,45 @@ Also debug() and error() will generate log records - these use LOG_CATEGORY as the category, so you should #define this right at the top of the source file to ensure the category is correct. +Generally each log format_string ends with a newline. If it does not, then the +next log statement will have the LOGRECF_CONT flag set. This can be used to +continue the statement on the same line as the previous one without emitting +new header information (such as category/level). This behaviour is implemented +with log_console. Here is an example that prints a list all on one line with +the tags at the start: + +.. code-block:: c + + log_debug("Here is a list:"); + for (i = 0; i < count; i++) + log_debug(" item %d", i); + log_debug("\n"); + +Also see the special category LOGL_CONT and level LOGC_CONT. + You can also define CONFIG_LOG_ERROR_RETURN to enable the log_ret() macro. This can be used whenever your function returns an error value: .. code-block:: c - return log_ret(uclass_first_device(UCLASS_MMC, &dev)); + return log_ret(uclass_first_device_err(UCLASS_MMC, &dev)); This will write a log record when an error code is detected (a value < 0). This can make it easier to trace errors that are generated deep in the call stack. +The log_msg_ret() variant will print a short string if CONFIG_LOG_ERROR_RETURN +is enabled. So long as the string is unique within the function you can normally +determine exactly which call failed: + +.. code-block:: c + + ret = gpio_request_by_name(dev, "cd-gpios", 0, &desc, GPIOD_IS_IN); + if (ret) + return log_msg_ret("gpio", ret); + +Some functions return 0 for success and any other value is an error. For these, +log_retz() and log_msg_retz() are available. + Convenience functions ~~~~~~~~~~~~~~~~~~~~~ |