Changeset c2417bc in mainline for kernel/genarch/src/srln/srln.c
- Timestamp:
- 2009-04-21T12:46:26Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f2d2c7ba
- Parents:
- 44b7783
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/srln/srln.c
r44b7783 rc2417bc 42 42 #include <string.h> 43 43 44 static indev_t srlnout; 45 46 indev_operations_t srlnout_ops = { 44 static indev_operations_t srln_raw_ops = { 47 45 .poll = NULL 48 46 }; … … 50 48 static void ksrln(void *arg) 51 49 { 52 indev_t *in = (indev_t *) arg;50 srln_instance_t *instance = (srln_instance_t *) arg; 53 51 bool cr = false; 54 52 uint32_t escape = 0; 55 53 56 54 while (true) { 57 wchar_t ch = _getc(in);55 wchar_t ch = indev_pop_character(&instance->raw); 58 56 59 57 /* ANSI escape sequence processing */ … … 123 121 ch = '\b'; 124 122 125 indev_push_character( stdin, ch);123 indev_push_character(instance->sink, ch); 126 124 } 127 125 } 128 126 129 void srln_init(indev_t *devin)127 srln_instance_t *srln_init(void) 130 128 { 131 indev_initialize("srln", &srlnout, &srlnout_ops); 132 thread_t *thread 133 = thread_create(ksrln, devin, TASK, 0, "ksrln", false); 129 srln_instance_t *instance 130 = malloc(sizeof(srln_instance_t), FRAME_ATOMIC); 131 if (instance) { 132 instance->thread 133 = thread_create(ksrln, (void *) instance, TASK, 0, "ksrln", false); 134 135 if (!instance->thread) { 136 free(instance); 137 return NULL; 138 } 139 140 instance->sink = NULL; 141 indev_initialize("srln", &instance->raw, &srln_raw_ops); 142 } 134 143 135 if (thread) { 136 stdin = &srlnout; 137 thread_ready(thread); 138 } 144 return instance; 145 } 146 147 indev_t *srln_wire(srln_instance_t *instance, indev_t *sink) 148 { 149 ASSERT(instance); 150 ASSERT(sink); 151 152 instance->sink = sink; 153 thread_ready(instance->thread); 154 155 return &instance->raw; 139 156 } 140 157
Note:
See TracChangeset
for help on using the changeset viewer.