Changeset efb8d15 in mainline
- Timestamp:
- 2012-03-02T15:32:13Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 196c253
- Parents:
- 71232af
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/sysinfo/sysinfo.c
r71232af refb8d15 464 464 /** Sysinfo dump indentation helper routine 465 465 * 466 * @param depth Number of indentation characters to print. 467 * 468 */ 469 NO_TRACE static void sysinfo_indent(unsigned int depth) 470 { 471 unsigned int i; 472 for (i = 0; i < depth; i++) 473 printf(" "); 466 * @param depth Number of spaces to print. 467 * 468 */ 469 NO_TRACE static void sysinfo_indent(size_t spaces) 470 { 471 for (size_t i = 0; i < spaces; i++) 472 printf(" "); 474 473 } 475 474 … … 478 477 * Should be called with sysinfo_lock held. 479 478 * 480 * @param root Root item of the current (sub)tree. 481 * @param depth Current depth in the sysinfo tree. 482 * 483 */ 484 NO_TRACE static void sysinfo_dump_internal(sysinfo_item_t *root, unsigned int depth) 485 { 486 sysinfo_item_t *cur = root; 487 479 * @param root Root item of the current (sub)tree. 480 * @param spaces Current indentation level. 481 * 482 */ 483 NO_TRACE static void sysinfo_dump_internal(sysinfo_item_t *root, size_t spaces) 484 { 488 485 /* Walk all siblings */ 489 while (cur != NULL) { 490 sysinfo_indent(depth); 486 for (sysinfo_item_t *cur = root; cur; cur = cur->next) { 487 size_t length; 488 489 if (spaces == 0) { 490 printf("%s", cur->name); 491 length = str_length(cur->name); 492 } else { 493 sysinfo_indent(spaces); 494 printf(".%s", cur->name); 495 length = str_length(cur->name) + 1; 496 } 491 497 492 498 sysarg_t val; … … 496 502 switch (cur->val_type) { 497 503 case SYSINFO_VAL_UNDEFINED: 498 printf(" + %s\n", cur->name);504 printf(" [undefined]\n"); 499 505 break; 500 506 case SYSINFO_VAL_VAL: 501 printf(" + %s -> %" PRIun" (%#" PRIxn ")\n", cur->name,502 cur->val.val , cur->val.val);507 printf(" -> %" PRIun" (%#" PRIxn ")\n", cur->val.val, 508 cur->val.val); 503 509 break; 504 510 case SYSINFO_VAL_DATA: 505 printf("+ %s (%zu bytes)\n", cur->name, 506 cur->val.data.size); 511 printf(" (%zu bytes)\n", cur->val.data.size); 507 512 break; 508 513 case SYSINFO_VAL_FUNCTION_VAL: 509 514 val = cur->val.fn_val(cur); 510 printf(" + %s -> %" PRIun" (%#" PRIxn ") [generated]\n",511 cur->name, val,val);515 printf(" -> %" PRIun" (%#" PRIxn ") [generated]\n", val, 516 val); 512 517 break; 513 518 case SYSINFO_VAL_FUNCTION_DATA: 514 519 /* N.B.: No data was actually returned (only a dry run) */ 515 520 (void) cur->val.fn_data(cur, &size, true); 516 printf("+ %s (%zu bytes) [generated]\n", cur->name, 517 size); 521 printf(" (%zu bytes) [generated]\n", size); 518 522 break; 519 523 default: … … 526 530 break; 527 531 case SYSINFO_SUBTREE_TABLE: 528 sysinfo_dump_internal(cur->subtree.table, depth + 1);532 sysinfo_dump_internal(cur->subtree.table, spaces + length); 529 533 break; 530 534 case SYSINFO_SUBTREE_FUNCTION: 531 sysinfo_indent( depth + 1);532 printf(" + [generated subtree]\n");535 sysinfo_indent(spaces + length); 536 printf("<generated subtree>\n"); 533 537 break; 534 538 default: 535 sysinfo_indent( depth + 1);536 printf(" + [unknown subtree]\n");539 sysinfo_indent(spaces + length); 540 printf("<unknown subtree>\n"); 537 541 } 538 539 cur = cur->next;540 542 } 541 543 } -
uspace/app/sysinfo/sysinfo.c
r71232af refb8d15 92 92 } 93 93 94 static void print_keys(const char *path) 94 static void print_spaces(size_t spaces) 95 { 96 for (size_t i = 0; i < spaces; i++) 97 printf(" "); 98 } 99 100 static void print_keys(const char *path, size_t spaces) 95 101 { 96 102 size_t size; … … 103 109 /* Process each key with sanity checks */ 104 110 size_t cur_size = str_nsize(keys + pos, size - pos); 111 if (keys[pos + cur_size] != 0) 112 break; 113 105 114 size_t path_size = str_size(path) + cur_size + 2; 106 115 char *cur_path = (char *) malloc(path_size); … … 108 117 break; 109 118 110 if (path[0] != 0) 119 size_t length; 120 121 if (path[0] != 0) { 122 print_spaces(spaces); 123 printf(".%s\n", keys + pos); 124 length = str_length(keys + pos) + 1; 125 111 126 snprintf(cur_path, path_size, "%s.%s", path, keys + pos); 112 else 127 } else { 128 printf("%s\n", keys + pos); 129 length = str_length(keys + pos); 130 113 131 snprintf(cur_path, path_size, "%s", keys + pos); 132 } 114 133 115 printf("%s\n", cur_path); 116 print_keys(cur_path); 134 print_keys(cur_path, spaces + length); 117 135 118 136 free(cur_path); … … 127 145 if (argc != 2) { 128 146 /* Print keys */ 129 print_keys("" );147 print_keys("", 0); 130 148 return 0; 131 149 }
Note:
See TracChangeset
for help on using the changeset viewer.