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