Commit ef48fc82 authored by Abdiel Janulgue's avatar Abdiel Janulgue

igt/igt_core: Provide an option to check for the log buffer contents

Signed-off-by: Abdiel Janulgue's avatarAbdiel Janulgue <abdiel.janulgue@linux.intel.com>
Reviewed-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
parent 51f4f9f9
......@@ -329,6 +329,30 @@ static void _igt_log_buffer_dump(void)
pthread_mutex_unlock(&log_buffer_mutex);
}
/**
* igt_log_buffer_inspect:
*
* Provides a way to replay the internal igt log buffer for inspection.
* @check: A user-specified handler that gets invoked for each line of
* the log buffer. The handler should return true to stop
* inspecting the rest of the buffer.
* @data: passed as a user argument to the inspection function.
*/
void igt_log_buffer_inspect(igt_buffer_log_handler_t check, void *data)
{
uint8_t i;
pthread_mutex_lock(&log_buffer_mutex);
i = log_buffer.start;
do {
if (check(log_buffer.entries[i], data))
break;
i++;
} while (i != log_buffer.start && i != log_buffer.end);
pthread_mutex_unlock(&log_buffer_mutex);
}
__attribute__((format(printf, 1, 2)))
static void kmsg(const char *format, ...)
#define KERN_EMER "<0>"
......
......@@ -818,6 +818,9 @@ void igt_vlog(const char *domain, enum igt_log_level level, const char *format,
*/
#define igt_critical(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_CRITICAL, f)
typedef bool (*igt_buffer_log_handler_t)(const char *line, void *data);
void igt_log_buffer_inspect(igt_buffer_log_handler_t check, void *data);
extern enum igt_log_level igt_log_level;
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment