Changeset 46c20c8 in mainline for uspace/app/klog/klog.c
- Timestamp:
- 2010-11-26T20:08:10Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 45df59a
- Parents:
- fb150d78 (diff), ffdd2b9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - File:
-
- 1 edited
-
uspace/app/klog/klog.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/klog/klog.c
rfb150d78 r46c20c8 43 43 #include <event.h> 44 44 #include <errno.h> 45 #include <str_error.h> 45 46 #include <io/klog.h> 46 47 47 #define NAME "klog" 48 #define NAME "klog" 49 #define LOG_FNAME "/log/klog" 48 50 49 51 /* Pointer to klog area */ 50 52 static wchar_t *klog; 51 53 static size_t klog_length; 54 55 static FILE *log; 52 56 53 57 static void interrupt_received(ipc_callid_t callid, ipc_call_t *call) … … 58 62 size_t i; 59 63 60 for (i = klog_len - klog_stored; i < klog_len; i++) 61 putchar(klog[(klog_start + i) % klog_length]); 64 for (i = klog_len - klog_stored; i < klog_len; i++) { 65 wchar_t ch = klog[(klog_start + i) % klog_length]; 66 67 putchar(ch); 68 69 if (log != NULL) 70 fputc(ch, log); 71 } 72 73 if (log != NULL) { 74 fflush(log); 75 fsync(fileno(log)); 76 } 62 77 } 63 78 64 79 int main(int argc, char *argv[]) 65 80 { 66 size_t klog_pages = sysinfo_value("klog.pages"); 81 size_t klog_pages; 82 if (sysinfo_get_value("klog.pages", &klog_pages) != EOK) { 83 printf("%s: Error getting klog address\n", NAME); 84 return -1; 85 } 86 67 87 size_t klog_size = klog_pages * PAGE_SIZE; 68 88 klog_length = klog_size / sizeof(wchar_t); … … 70 90 klog = (wchar_t *) as_get_mappable_page(klog_size); 71 91 if (klog == NULL) { 72 printf( NAME ": Error allocating memory area\n");92 printf("%s: Error allocating memory area\n", NAME); 73 93 return -1; 74 94 } … … 77 97 klog_size, SERVICE_MEM_KLOG); 78 98 if (res != EOK) { 79 printf( NAME ": Error initializing memory area\n");99 printf("%s: Error initializing memory area\n", NAME); 80 100 return -1; 81 101 } 82 102 83 103 if (event_subscribe(EVENT_KLOG, 0) != EOK) { 84 printf( NAME ": Error registering klog notifications\n");104 printf("%s: Error registering klog notifications\n", NAME); 85 105 return -1; 86 106 } 107 108 /* 109 * Mode "a" would be definitively much better here, but it is 110 * not well supported by the FAT driver. 111 * 112 */ 113 log = fopen(LOG_FNAME, "w"); 114 if (log == NULL) 115 printf("%s: Unable to create log file %s (%s)\n", NAME, LOG_FNAME, 116 str_error(errno)); 87 117 88 118 async_set_interrupt_received(interrupt_received);
Note:
See TracChangeset
for help on using the changeset viewer.
