Changeset 2d37006 in mainline
- Timestamp:
- 2012-04-15T01:09:11Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6484602
- Parents:
- d517c5b
- Location:
- uspace/app/top
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/top/screen.c
rd517c5b r2d37006 37 37 38 38 #include <stdio.h> 39 #include <stdlib.h> 39 40 #include <io/console.h> 40 41 #include <io/style.h> … … 48 49 #define USEC_COUNT 1000000 49 50 50 static sysarg_t warn_col = 0;51 static sysarg_t warn_row = 0;52 51 static suseconds_t timeleft = 0; 53 52 54 53 console_ctrl_t *console; 55 54 55 static sysarg_t warning_col = 0; 56 static sysarg_t warning_row = 0; 57 static suseconds_t warning_timeleft = 0; 58 static char *warning_text = NULL; 59 56 60 static void screen_style_normal(void) 57 61 { … … 64 68 console_flush(console); 65 69 console_set_style(console, STYLE_INVERTED); 70 } 71 72 static void screen_style_emphasis(void) 73 { 74 console_flush(console); 75 console_set_style(console, STYLE_EMPHASIS); 66 76 } 67 77 … … 126 136 void screen_done(void) 127 137 { 138 free(warning_text); 139 warning_text = NULL; 140 128 141 screen_restart(true); 129 142 … … 484 497 } 485 498 499 static void print_warning(void) 500 { 501 screen_get_pos(&warning_col, &warning_row); 502 if (warning_timeleft > 0) { 503 screen_style_emphasis(); 504 print_string(warning_text); 505 screen_style_normal(); 506 } else { 507 free(warning_text); 508 warning_text = NULL; 509 } 510 screen_newline(); 511 } 512 486 513 void print_data(data_t *data) 487 514 { … … 492 519 print_cpu_info(data); 493 520 print_physmem_info(data); 494 495 /* Empty row for warnings */ 496 screen_get_pos(&warn_col, &warn_row); 497 screen_newline(); 521 print_warning(); 498 522 499 523 switch (op_mode) { … … 518 542 } 519 543 520 void print_warning(const char *fmt, ...) 521 { 522 screen_moveto(warn_col, warn_row); 523 544 void show_warning(const char *fmt, ...) 545 { 546 sysarg_t cols; 547 sysarg_t rows; 548 screen_get_size(&cols, &rows); 549 550 size_t warning_text_size = 1 + cols * sizeof(*warning_text); 551 free(warning_text); 552 warning_text = malloc(warning_text_size); 553 if (!warning_text) 554 return; 555 524 556 va_list args; 525 557 va_start(args, fmt); 526 v printf(fmt, args);558 vsnprintf(warning_text, warning_text_size, fmt, args); 527 559 va_end(args); 528 560 529 screen_newline(); 561 warning_timeleft = 2 * USEC_COUNT; 562 563 screen_moveto(warning_col, warning_row); 564 print_warning(); 530 565 console_flush(console); 531 566 } … … 555 590 kbd_event_t event; 556 591 592 warning_timeleft -= timeleft; 557 593 if (!console_get_kbd_event_timeout(console, &event, &timeleft)) { 558 594 timeleft = 0; 559 595 return -1; 560 596 } 597 warning_timeleft += timeleft; 561 598 562 599 if (event.type == KEY_PRESS) -
uspace/app/top/screen.h
rd517c5b r2d37006 43 43 extern void screen_done(void); 44 44 extern void print_data(data_t *); 45 extern void print_warning(const char *, ...);45 extern void show_warning(const char *, ...); 46 46 47 47 extern int tgetchar(unsigned int); -
uspace/app/top/top.c
rd517c5b r2d37006 406 406 excs_all = !excs_all; 407 407 if (excs_all) 408 print_warning("Showing all exceptions");408 show_warning("Showing all exceptions"); 409 409 else 410 print_warning("Showing only hot exceptions");410 show_warning("Showing only hot exceptions"); 411 411 break; 412 412 } 413 413 /* fallthrough */ 414 414 default: 415 print_warning("Unknown command \"%c\", use \"h\" for help", c);415 show_warning("Unknown command \"%c\", use \"h\" for help", c); 416 416 continue; /* don't redraw */ 417 417 }
Note:
See TracChangeset
for help on using the changeset viewer.