Changes in uspace/app/taskdump/taskdump.c [e3a3a619:36e9cd1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/taskdump/taskdump.c
re3a3a619 r36e9cd1 54 54 #define LINE_BYTES 16 55 55 56 #define DBUF_SIZE 4096 57 static uint8_t data_buf[DBUF_SIZE]; 58 56 59 static int phoneid; 57 60 static task_id_t task_id; … … 67 70 static int thread_dump(uintptr_t thash); 68 71 static int areas_dump(void); 72 static int area_dump(as_area_info_t *area); 73 static void hex_dump(uintptr_t addr, void *buffer, size_t size); 69 74 static int td_read_uintptr(void *arg, uintptr_t addr, uintptr_t *value); 70 75 … … 351 356 } 352 357 358 static __attribute__((unused)) int area_dump(as_area_info_t *area) 359 { 360 size_t to_copy; 361 size_t total; 362 uintptr_t addr; 363 int rc; 364 365 addr = area->start_addr; 366 total = 0; 367 368 while (total < area->size) { 369 to_copy = min(area->size - total, DBUF_SIZE); 370 rc = udebug_mem_read(phoneid, data_buf, addr, to_copy); 371 if (rc < 0) { 372 printf("udebug_mem_read() failed.\n"); 373 return rc; 374 } 375 376 hex_dump(addr, data_buf, to_copy); 377 378 addr += to_copy; 379 total += to_copy; 380 } 381 382 return EOK; 383 } 384 385 static void hex_dump(uintptr_t addr, void *buffer, size_t size) 386 { 387 uint8_t *data = (uint8_t *) buffer; 388 uint8_t b; 389 size_t pos, i; 390 391 assert(addr % LINE_BYTES == 0); 392 assert(size % LINE_BYTES == 0); 393 394 pos = 0; 395 396 while (pos < size) { 397 printf("%08lx:", addr + pos); 398 for (i = 0; i < LINE_BYTES; ++i) { 399 if (i % 4 == 0) putchar(' '); 400 printf(" %02x", data[pos + i]); 401 } 402 putchar('\t'); 403 404 for (i = 0; i < LINE_BYTES; ++i) { 405 b = data[pos + i]; 406 if (b >= 32 && b < 127) { 407 putchar(b); 408 } else { 409 putchar(' '); 410 } 411 } 412 putchar('\n'); 413 pos += LINE_BYTES; 414 } 415 } 416 353 417 static int td_read_uintptr(void *arg, uintptr_t addr, uintptr_t *value) 354 418 {
Note:
See TracChangeset
for help on using the changeset viewer.