48,6 → 48,7 |
#include <screenbuffer.h> |
#include <sys/mman.h> |
#include <stdio.h> |
#include <sysinfo.h> |
|
#include "gcons.h" |
|
58,6 → 59,7 |
/** Index of currently used virtual console. |
*/ |
int active_console = 0; |
int prev_console = 0; |
|
/** Information about framebuffer |
*/ |
207,9 → 209,10 |
gcons_in_kernel(); |
async_serialize_end(); |
|
if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) |
if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) { |
prev_console = active_console; |
active_console = KERNEL_CONSOLE; |
else |
} else |
newcons = active_console; |
} |
|
443,6 → 446,11 |
} |
} |
|
static void interrupt_received(ipc_callid_t callid, ipc_call_t *call) |
{ |
change_console(prev_console); |
} |
|
int main(int argc, char *argv[]) |
{ |
printf(NAME ": HelenOS Console service\n"); |
520,6 → 528,16 |
if (ipc_connect_to_me(PHONE_NS, SERVICE_CONSOLE, 0, 0, &phonehash) != 0) |
return -1; |
|
/* Receive kernel notifications */ |
if (sysinfo_value("kconsole.present")) { |
int devno = sysinfo_value("kconsole.devno"); |
int inr = sysinfo_value("kconsole.inr"); |
if (ipc_register_irq(inr, devno, 0, NULL) != EOK) |
printf(NAME ": Error registering kconsole notifications\n"); |
|
async_set_interrupt_received(interrupt_received); |
} |
|
// FIXME: avoid connectiong to itself, keep using klog |
// printf(NAME ": Accepting connections\n"); |
async_manager(); |