xref: /linux/tools/perf/util/print_binary.h (revision 664b0bae0b87f69bc9deb098f5e0158b9cf18e04)
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>
6923d0c9aSArnaldo 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 
21923d0c9aSArnaldo Carvalho de Melo typedef int (*binary__fprintf_t)(enum binary_printer_ops op,
22923d0c9aSArnaldo Carvalho de Melo 				 unsigned int val, void *extra, FILE *fp);
23fea01392SArnaldo Carvalho de Melo 
24923d0c9aSArnaldo Carvalho de Melo int binary__fprintf(unsigned char *data, size_t len,
25923d0c9aSArnaldo Carvalho de Melo 		    size_t bytes_per_line, binary__fprintf_t printer,
26923d0c9aSArnaldo Carvalho de Melo 		    void *extra, FILE *fp);
27923d0c9aSArnaldo Carvalho de Melo 
print_binary(unsigned char * data,size_t len,size_t bytes_per_line,binary__fprintf_t printer,void * extra)28923d0c9aSArnaldo Carvalho de Melo static inline void print_binary(unsigned char *data, size_t len,
29923d0c9aSArnaldo Carvalho de Melo 				size_t bytes_per_line, binary__fprintf_t printer,
30923d0c9aSArnaldo Carvalho de Melo 				void *extra)
31923d0c9aSArnaldo Carvalho de Melo {
32923d0c9aSArnaldo Carvalho de Melo 	binary__fprintf(data, len, bytes_per_line, printer, extra, stdout);
33923d0c9aSArnaldo Carvalho de Melo }
34fea01392SArnaldo Carvalho de Melo 
35fea01392SArnaldo Carvalho de Melo int is_printable_array(char *p, unsigned int len);
36fea01392SArnaldo Carvalho de Melo 
37fea01392SArnaldo Carvalho de Melo #endif /* PERF_PRINT_BINARY_H */
38