Changeset bbc6277 in mainline for uspace/srv/hid/output/port/chardev.c
- Timestamp:
- 2017-11-30T17:00:09Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b5abaf7
- Parents:
- 7f345cd0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/output/port/chardev.c
r7f345cd0 rbbc6277 46 46 #include "chardev.h" 47 47 48 enum { 49 chardev_buf_size = 4096 50 }; 51 48 52 static char *console; 49 53 … … 53 57 static service_id_t console_cat_id; 54 58 59 static uint8_t chardev_buf[chardev_buf_size]; 60 static size_t chardev_bused; 61 55 62 static FIBRIL_MUTEX_INITIALIZE(discovery_lock); 56 63 static bool discovery_finished; 57 64 static FIBRIL_CONDVAR_INITIALIZE(discovery_cv); 58 65 66 static void chardev_flush(void) 67 { 68 size_t nwr; 69 70 if (chardev_bused == 0) 71 return; 72 73 chardev_write(chardev, chardev_buf, chardev_bused, &nwr); 74 /* XXX Handle error */ 75 76 chardev_bused = 0; 77 } 78 59 79 static void chardev_putchar(wchar_t ch) 60 80 { 61 uint8_t byte = (uint8_t) ch; 62 size_t nwr; 63 chardev_write(chardev, &byte, 1, &nwr); 64 /* XXX Handle error */ 81 if (chardev_bused == chardev_buf_size) 82 chardev_flush(); 83 if (!ascii_check(ch)) 84 ch = '?'; 85 chardev_buf[chardev_bused++] = (uint8_t) ch; 65 86 } 66 87 67 88 static void chardev_control_puts(const char *str) 68 89 { 69 size_t nwr; 70 chardev_write(chardev, (void *) str, str_size(str), &nwr); 71 /* XXX Handle error */ 90 const char *p; 91 92 p = str; 93 while (*p != '\0') 94 chardev_putchar(*p++); 72 95 } 73 96 … … 175 198 } 176 199 177 serial_init(chardev_putchar, chardev_control_puts );200 serial_init(chardev_putchar, chardev_control_puts, chardev_flush); 178 201 179 202 discovery_finished = true;
Note:
See TracChangeset
for help on using the changeset viewer.