drm/print: add drm_print_hex_dump()

Add a helper to print a hex dump to a struct drm_printer. There's no
fancy formatting stuff, just 16 space-separated bytes per line, with an
optional prefix.

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/f650fe1ed3e3bb74760426fa7461c3b028d661fb.1733392101.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
Jani Nikula 2024-12-05 11:49:33 +02:00
parent b031ef5ea8
commit 3050c18113
2 changed files with 25 additions and 0 deletions

View File

@ -390,3 +390,26 @@ void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset)
}
}
EXPORT_SYMBOL(drm_print_regset32);
/**
* drm_print_hex_dump - print a hex dump to a &drm_printer stream
* @p: The &drm_printer
* @prefix: Prefix for each line, may be NULL for no prefix
* @buf: Buffer to dump
* @len: Length of buffer
*
* Print hex dump to &drm_printer, with 16 space-separated hex bytes per line,
* optionally with a prefix on each line. No separator is added after prefix.
*/
void drm_print_hex_dump(struct drm_printer *p, const char *prefix,
const u8 *buf, size_t len)
{
int i;
for (i = 0; i < len; i += 16) {
int bytes_per_line = min(16, len - i);
drm_printf(p, "%s%*ph\n", prefix ?: "", bytes_per_line, buf + i);
}
}
EXPORT_SYMBOL(drm_print_hex_dump);

View File

@ -199,6 +199,8 @@ void drm_puts(struct drm_printer *p, const char *str);
void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset);
void drm_print_bits(struct drm_printer *p, unsigned long value,
const char * const bits[], unsigned int nbits);
void drm_print_hex_dump(struct drm_printer *p, const char *prefix,
const u8 *buf, size_t len);
__printf(2, 0)
/**