Changeset cf3a905c in mainline
- Timestamp:
- 2018-11-23T18:32:50Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 04c35fca
- Parents:
- 2519349
- git-author:
- Jiri Svoboda <jiri@…> (2018-11-22 19:31:08)
- git-committer:
- Jiri Svoboda <jiri@…> (2018-11-23 18:32:50)
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/drivers/ski.c
r2519349 rcf3a905c 37 37 #include <console/console.h> 38 38 #include <console/chardev.h> 39 #include <ddi/ddi.h> 39 40 #include <sysinfo/sysinfo.h> 40 41 #include <stdint.h> … … 69 70 70 71 static ski_instance_t *instance = NULL; 72 static parea_t ski_parea; 71 73 72 74 /** Ask debug console if a key was pressed. … … 105 107 int count = POLL_LIMIT; 106 108 109 if (ski_parea.mapped) 110 return; 111 107 112 while (count > 0) { 108 113 wchar_t ch = ski_getchar(); … … 122 127 123 128 while (true) { 124 // TODO FIXME: 125 // This currently breaks the kernel console 126 // before we get the override from uspace. 127 if (console_override) 128 poll_keyboard(instance); 129 129 poll_keyboard(instance); 130 130 thread_usleep(POLL_INTERVAL); 131 131 } … … 140 140 static void ski_init(void) 141 141 { 142 uintptr_t faddr; 143 142 144 if (instance) 143 145 return; … … 150 152 : "r15", "r8" 151 153 ); 154 155 faddr = frame_alloc(1, FRAME_LOWMEM | FRAME_ATOMIC, 0); 156 if (faddr == 0) 157 panic("Cannot allocate page for ski console."); 158 159 ddi_parea_init(&ski_parea); 160 ski_parea.pbase = faddr; 161 ski_parea.frames = 1; 162 ski_parea.unpriv = false; 163 ski_parea.mapped = false; 164 ddi_parea_register(&ski_parea); 165 166 sysinfo_set_item_val("ski.paddr", NULL, (sysarg_t) faddr); 152 167 153 168 instance = malloc(sizeof(ski_instance_t)); … … 190 205 static void ski_putwchar(outdev_t *dev, wchar_t ch) 191 206 { 192 // TODO FIXME: 193 // This currently breaks the kernel console 194 // before we get the override from uspace. 195 if (console_override) { 196 if (ascii_check(ch)) { 197 if (ch == '\n') 198 ski_do_putchar('\r'); 199 200 ski_do_putchar(ch); 201 } else { 202 ski_do_putchar('?'); 203 } 207 if (ski_parea.mapped) 208 return; 209 210 if (ascii_check(ch)) { 211 if (ch == '\n') 212 ski_do_putchar('\r'); 213 214 ski_do_putchar(ch); 215 } else { 216 ski_do_putchar('?'); 204 217 } 205 218 } -
uspace/drv/char/ski-con/ski-con.c
r2519349 rcf3a905c 31 31 */ 32 32 33 #include <as.h> 33 34 #include <async.h> 34 35 #include <ddf/driver.h> 35 36 #include <ddf/log.h> 37 #include <ddi.h> 36 38 #include <errno.h> 37 39 #include <fibril.h> … … 69 71 ddf_fun_t *fun = NULL; 70 72 bool bound = false; 73 uintptr_t faddr; 74 void *addr = AS_AREA_ANY; 71 75 errno_t rc; 72 76 … … 88 92 con->cds.sarg = con; 89 93 94 rc = sysinfo_get_value("ski.paddr", &faddr); 95 if (rc != EOK) 96 faddr = 0; /* No kernel driver to arbitrate with */ 97 98 if (faddr != 0) { 99 addr = AS_AREA_ANY; 100 rc = physmem_map(faddr, 1, AS_AREA_READ | AS_AREA_CACHEABLE, 101 &addr); 102 if (rc != EOK) { 103 ddf_msg(LVL_ERROR, "Cannot map kernel driver arbitration area."); 104 goto error; 105 } 106 } 107 90 108 rc = ddf_fun_bind(fun); 91 109 if (rc != EOK) { … … 108 126 return EOK; 109 127 error: 128 if (addr != AS_AREA_ANY) 129 as_area_destroy(addr); 110 130 if (bound) 111 131 ddf_fun_unbind(fun); -
uspace/drv/char/ski-con/ski-con.h
r2519349 rcf3a905c 56 56 fibril_mutex_t buf_lock; 57 57 fibril_condvar_t buf_cv; 58 /** Memory area mapped to arbitrate with the kernel driver */ 59 void *mem_area; 58 60 } ski_con_t; 59 61
Note:
See TracChangeset
for help on using the changeset viewer.