esp_log: Refactor esp_log_level_get() into a common static function

Removes duplicate code for a small runtime & size overhead if
esp_log_level_get() is not called in the firmware.

Follow-up to https://github.com/espressif/esp-idf/pull/6573
This commit is contained in:
Angus Gratton 2021-06-07 17:11:16 +10:00
parent fc85f8a47d
commit 6c44fe291c

View File

@ -141,9 +141,13 @@ void esp_log_level_set(const char *tag, esp_log_level_t level)
esp_log_impl_unlock();
}
esp_log_level_t esp_log_level_get(const char* tag)
/* Common code for getting the log level from cache, esp_log_impl_lock()
should be called before calling this function. The function unlocks,
as indicated in the name.
*/
static esp_log_level_t s_log_level_get_and_unlock(const char *tag)
{
esp_log_impl_lock();
esp_log_level_t level_for_tag;
// Look for the tag in cache first, then in the linked list of all tags
if (!get_cached_log_level(tag, &level_for_tag)) {
@ -160,6 +164,12 @@ esp_log_level_t esp_log_level_get(const char* tag)
return level_for_tag;
}
esp_log_level_t esp_log_level_get(const char *tag)
{
esp_log_impl_lock();
return s_log_level_get_and_unlock(tag);
}
void clear_log_level_list(void)
{
uncached_tag_entry_t *it;
@ -182,18 +192,7 @@ void esp_log_writev(esp_log_level_t level,
if (!esp_log_impl_lock_timeout()) {
return;
}
esp_log_level_t level_for_tag;
// Look for the tag in cache first, then in the linked list of all tags
if (!get_cached_log_level(tag, &level_for_tag)) {
if (!get_uncached_log_level(tag, &level_for_tag)) {
level_for_tag = esp_log_default_level;
}
add_to_cache(tag, level_for_tag);
#ifdef LOG_BUILTIN_CHECKS
++s_log_cache_misses;
#endif
}
esp_log_impl_unlock();
esp_log_level_t level_for_tag = s_log_level_get_and_unlock(tag);
if (!should_output(level, level_for_tag)) {
return;
}