Rev 4326 | Rev 4352 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4326 | Rev 4329 | ||
---|---|---|---|
Line 62... | Line 62... | ||
62 | /** Index of currently used virtual console. |
62 | /** Index of currently used virtual console. |
63 | */ |
63 | */ |
64 | int active_console = 0; |
64 | int active_console = 0; |
65 | int prev_console = 0; |
65 | int prev_console = 0; |
66 | 66 | ||
- | 67 | /** Phone to the keyboard driver. */ |
|
- | 68 | static int kbd_phone; |
|
- | 69 | ||
67 | /** Information about framebuffer */ |
70 | /** Information about framebuffer */ |
68 | struct { |
71 | struct { |
69 | int phone; /**< Framebuffer phone */ |
72 | int phone; /**< Framebuffer phone */ |
70 | ipcarg_t rows; /**< Framebuffer rows */ |
73 | ipcarg_t rows; /**< Framebuffer rows */ |
71 | ipcarg_t cols; /**< Framebuffer columns */ |
74 | ipcarg_t cols; /**< Framebuffer columns */ |
Line 149... | Line 152... | ||
149 | static void screen_reclaim(void) |
152 | static void screen_reclaim(void) |
150 | { |
153 | { |
151 | ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_RECLAIM); |
154 | ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_RECLAIM); |
152 | } |
155 | } |
153 | 156 | ||
- | 157 | static void kbd_yield(void) |
|
- | 158 | { |
|
- | 159 | ipc_call_sync_0_0(kbd_phone, KBD_YIELD); |
|
- | 160 | } |
|
- | 161 | ||
- | 162 | static void kbd_reclaim(void) |
|
- | 163 | { |
|
- | 164 | ipc_call_sync_0_0(kbd_phone, KBD_RECLAIM); |
|
- | 165 | } |
|
- | 166 | ||
154 | static void set_style(int style) |
167 | static void set_style(int style) |
155 | { |
168 | { |
156 | async_msg_1(fb_info.phone, FB_SET_STYLE, style); |
169 | async_msg_1(fb_info.phone, FB_SET_STYLE, style); |
157 | } |
170 | } |
158 | 171 | ||
Line 339... | Line 352... | ||
339 | if (newcons == KERNEL_CONSOLE) { |
352 | if (newcons == KERNEL_CONSOLE) { |
340 | async_serialize_start(); |
353 | async_serialize_start(); |
341 | curs_hide_sync(); |
354 | curs_hide_sync(); |
342 | gcons_in_kernel(); |
355 | gcons_in_kernel(); |
343 | screen_yield(); |
356 | screen_yield(); |
- | 357 | kbd_yield(); |
|
344 | async_serialize_end(); |
358 | async_serialize_end(); |
345 | 359 | ||
346 | 360 | ||
347 | if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) { |
361 | if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) { |
348 | prev_console = active_console; |
362 | prev_console = active_console; |
Line 354... | Line 368... | ||
354 | if (newcons != KERNEL_CONSOLE) { |
368 | if (newcons != KERNEL_CONSOLE) { |
355 | async_serialize_start(); |
369 | async_serialize_start(); |
356 | 370 | ||
357 | if (active_console == KERNEL_CONSOLE) { |
371 | if (active_console == KERNEL_CONSOLE) { |
358 | screen_reclaim(); |
372 | screen_reclaim(); |
- | 373 | kbd_reclaim(); |
|
359 | gcons_redraw_console(); |
374 | gcons_redraw_console(); |
360 | } |
375 | } |
361 | 376 | ||
362 | active_console = newcons; |
377 | active_console = newcons; |
363 | gcons_change_console(newcons); |
378 | gcons_change_console(newcons); |
Line 663... | Line 678... | ||
663 | int main(int argc, char *argv[]) |
678 | int main(int argc, char *argv[]) |
664 | { |
679 | { |
665 | printf(NAME ": HelenOS Console service\n"); |
680 | printf(NAME ": HelenOS Console service\n"); |
666 | 681 | ||
667 | ipcarg_t phonehash; |
682 | ipcarg_t phonehash; |
668 | int kbd_phone; |
- | |
669 | size_t ib_size; |
683 | size_t ib_size; |
670 | int i; |
684 | int i; |
671 | 685 | ||
672 | async_set_client_connection(client_connection); |
686 | async_set_client_connection(client_connection); |
673 | 687 |