^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef PERF_PRINT_BINARY_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define PERF_PRINT_BINARY_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <stddef.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <stdio.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) enum binary_printer_ops {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) BINARY_PRINT_DATA_BEGIN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) BINARY_PRINT_LINE_BEGIN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) BINARY_PRINT_ADDR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) BINARY_PRINT_NUM_DATA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) BINARY_PRINT_NUM_PAD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) BINARY_PRINT_SEP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) BINARY_PRINT_CHAR_DATA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) BINARY_PRINT_CHAR_PAD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) BINARY_PRINT_LINE_END,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) BINARY_PRINT_DATA_END,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) typedef int (*binary__fprintf_t)(enum binary_printer_ops op,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned int val, void *extra, FILE *fp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) int binary__fprintf(unsigned char *data, size_t len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) size_t bytes_per_line, binary__fprintf_t printer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) void *extra, FILE *fp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) static inline void print_binary(unsigned char *data, size_t len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) size_t bytes_per_line, binary__fprintf_t printer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) void *extra)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) binary__fprintf(data, len, bytes_per_line, printer, extra, stdout);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) int is_printable_array(char *p, unsigned int len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #endif /* PERF_PRINT_BINARY_H */