diff options
author | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2017-04-13 16:18:37 +0300 |
---|---|---|
committer | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2017-06-14 11:07:00 +0300 |
commit | ef48fc8233872545243e9a41df498fceedece978 (patch) | |
tree | e423429f21dd3122f36ffb3a744a4e54f3c3c928 /lib/igt_core.c | |
parent | 51f4f9f9ab320e681057bdd203445e725ad04768 (diff) |
igt/igt_core: Provide an option to check for the log buffer contents
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Diffstat (limited to 'lib/igt_core.c')
-rw-r--r-- | lib/igt_core.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/igt_core.c b/lib/igt_core.c index 26f7fc59..9a5ed40e 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -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>" |