162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef PERF_PRINT_BINARY_H 362306a36Sopenharmony_ci#define PERF_PRINT_BINARY_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <stddef.h> 662306a36Sopenharmony_ci#include <stdio.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_cienum binary_printer_ops { 962306a36Sopenharmony_ci BINARY_PRINT_DATA_BEGIN, 1062306a36Sopenharmony_ci BINARY_PRINT_LINE_BEGIN, 1162306a36Sopenharmony_ci BINARY_PRINT_ADDR, 1262306a36Sopenharmony_ci BINARY_PRINT_NUM_DATA, 1362306a36Sopenharmony_ci BINARY_PRINT_NUM_PAD, 1462306a36Sopenharmony_ci BINARY_PRINT_SEP, 1562306a36Sopenharmony_ci BINARY_PRINT_CHAR_DATA, 1662306a36Sopenharmony_ci BINARY_PRINT_CHAR_PAD, 1762306a36Sopenharmony_ci BINARY_PRINT_LINE_END, 1862306a36Sopenharmony_ci BINARY_PRINT_DATA_END, 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_citypedef int (*binary__fprintf_t)(enum binary_printer_ops op, 2262306a36Sopenharmony_ci unsigned int val, void *extra, FILE *fp); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciint binary__fprintf(unsigned char *data, size_t len, 2562306a36Sopenharmony_ci size_t bytes_per_line, binary__fprintf_t printer, 2662306a36Sopenharmony_ci void *extra, FILE *fp); 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistatic inline void print_binary(unsigned char *data, size_t len, 2962306a36Sopenharmony_ci size_t bytes_per_line, binary__fprintf_t printer, 3062306a36Sopenharmony_ci void *extra) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci binary__fprintf(data, len, bytes_per_line, printer, extra, stdout); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciint is_printable_array(char *p, unsigned int len); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#endif /* PERF_PRINT_BINARY_H */ 38