Blame view
cmd/iotrace.c
2.96 KB
83d290c56 SPDX: Convert all... |
1 |
// SPDX-License-Identifier: GPL-2.0+ |
aa53233a1 Add an I/O tracin... |
2 3 |
/* * Copyright (c) 2014 Google, Inc |
aa53233a1 Add an I/O tracin... |
4 5 6 7 8 9 10 11 |
*/ #include <common.h> #include <command.h> #include <iotrace.h> static void do_print_stats(void) { |
e0212dfa1 iotrace: fix beha... |
12 |
ulong start, size, needed_size, offset, count; |
aa53233a1 Add an I/O tracin... |
13 14 15 |
printf("iotrace is %sabled ", iotrace_get_enabled() ? "en" : "dis"); |
e0212dfa1 iotrace: fix beha... |
16 |
iotrace_get_buffer(&start, &size, &needed_size, &offset, &count); |
aa53233a1 Add an I/O tracin... |
17 18 |
printf("Start: %08lx ", start); |
e0212dfa1 iotrace: fix beha... |
19 20 21 22 |
printf("Actual Size: %08lx ", size); printf("Needed Size: %08lx ", needed_size); |
b559c4af8 cmd: iotrace: add... |
23 24 25 26 27 |
iotrace_get_region(&start, &size); printf("Region: %08lx ", start); printf("Size: %08lx ", size); |
aa53233a1 Add an I/O tracin... |
28 29 30 31 32 33 34 35 36 |
printf("Offset: %08lx ", offset); printf("Output: %08lx ", start + offset); printf("Count: %08lx ", count); printf("CRC32: %08lx ", (ulong)iotrace_get_checksum()); } |
501c89d33 cmd: iotrace: add... |
37 38 |
static void do_print_trace(void) { |
e0212dfa1 iotrace: fix beha... |
39 |
ulong start, size, needed_size, offset, count; |
501c89d33 cmd: iotrace: add... |
40 41 |
struct iotrace_record *cur_record; |
e0212dfa1 iotrace: fix beha... |
42 |
iotrace_get_buffer(&start, &size, &needed_size, &offset, &count); |
501c89d33 cmd: iotrace: add... |
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
if (!start || !size || !count) return; printf("Timestamp Value Address "); cur_record = (struct iotrace_record *)start; for (int i = 0; i < count; i++) { if (cur_record->flags & IOT_WRITE) printf("%08llu: 0x%08lx --> 0x%08llx ", cur_record->timestamp, cur_record->value, (unsigned long long)cur_record->addr); else printf("%08llu: 0x%08lx <-- 0x%08llx ", cur_record->timestamp, cur_record->value, (unsigned long long)cur_record->addr); cur_record++; } } |
aa53233a1 Add an I/O tracin... |
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
static int do_set_buffer(int argc, char * const argv[]) { ulong addr = 0, size = 0; if (argc == 2) { addr = simple_strtoul(*argv++, NULL, 16); size = simple_strtoul(*argv++, NULL, 16); } else if (argc != 0) { return CMD_RET_USAGE; } iotrace_set_buffer(addr, size); return 0; } |
b559c4af8 cmd: iotrace: add... |
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
static int do_set_region(int argc, char * const argv[]) { ulong addr = 0, size = 0; if (argc == 2) { addr = simple_strtoul(*argv++, NULL, 16); size = simple_strtoul(*argv++, NULL, 16); } else if (argc != 0) { return CMD_RET_USAGE; } iotrace_set_region(addr, size); return 0; } |
aa53233a1 Add an I/O tracin... |
98 99 100 101 102 103 104 105 106 |
int do_iotrace(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { const char *cmd = argc < 2 ? NULL : argv[1]; if (!cmd) return cmd_usage(cmdtp); switch (*cmd) { case 'b': return do_set_buffer(argc - 2, argv + 2); |
b559c4af8 cmd: iotrace: add... |
107 108 |
case 'l': return do_set_region(argc - 2, argv + 2); |
aa53233a1 Add an I/O tracin... |
109 110 111 112 113 114 115 116 117 |
case 'p': iotrace_set_enabled(0); break; case 'r': iotrace_set_enabled(1); break; case 's': do_print_stats(); break; |
501c89d33 cmd: iotrace: add... |
118 119 120 |
case 'd': do_print_trace(); break; |
aa53233a1 Add an I/O tracin... |
121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
default: return CMD_RET_USAGE; } return 0; } U_BOOT_CMD( iotrace, 4, 1, do_iotrace, "iotrace utility commands", "stats - display iotrace stats " "iotrace buffer <address> <size> - set iotrace buffer " |
b559c4af8 cmd: iotrace: add... |
135 136 |
"iotrace limit <address> <size> - set iotrace region limit " |
aa53233a1 Add an I/O tracin... |
137 138 |
"iotrace pause - pause tracing " |
501c89d33 cmd: iotrace: add... |
139 140 141 |
"iotrace resume - resume tracing " "iotrace dump - dump iotrace buffer" |
aa53233a1 Add an I/O tracin... |
142 |
); |