// until we support ISA device enumeration from PnP BIOS or ACPI, // we have to probe the 4 default COM ports... status_t scan_isa_hardcoded() { #ifdef HANDLE_ISA_COM int i; bool serialDebug = get_safemode_boolean("serial_debug_output", true); for (i = 0; i < 4; i++) { // skip the port used for kernel debugging... if (serialDebug && sHardcodedPorts[i].ioBase == gKernelDebugPort) { TRACE_ALWAYS("Skipping port %d as it is used for kernel debug.\n", i); continue; } SerialDevice *device; device = new(std::nothrow) SerialDevice(&sSupportedDevices[0], sHardcodedPorts[i].ioBase, sHardcodedPorts[i].irq); if (device != NULL && device->Probe()) pc_serial_insert_device(device); else delete device; } #endif return B_OK; }
status_t smp_init(kernel_args* args) { TRACE(("smp_init: entry\n")); #if DEBUG_SPINLOCK_LATENCIES sEnableLatencyCheck = !get_safemode_boolean(B_SAFEMODE_DISABLE_LATENCY_CHECK, false); #endif #if DEBUG_SPINLOCKS add_debugger_command_etc("spinlock", &dump_spinlock, "Dump info on a spinlock", "\n" "Dumps info on a spinlock.\n", 0); #endif add_debugger_command_etc("ici", &dump_ici_messages, "Dump info on pending ICI messages", "\n" "Dumps info on pending ICI messages.\n", 0); add_debugger_command_etc("ici_message", &dump_ici_message, "Dump info on an ICI message", "\n" "Dumps info on an ICI message.\n", 0); if (args->num_cpus > 1) { sFreeMessages = NULL; sFreeMessageCount = 0; for (int i = 0; i < MSG_POOL_SIZE; i++) { struct smp_msg* msg = (struct smp_msg*)malloc(sizeof(struct smp_msg)); if (msg == NULL) { panic("error creating smp mailboxes\n"); return B_ERROR; } memset(msg, 0, sizeof(struct smp_msg)); msg->next = sFreeMessages; sFreeMessages = msg; sFreeMessageCount++; } sNumCPUs = args->num_cpus; } TRACE(("smp_init: calling arch_smp_init\n")); return arch_smp_init(args); }
status_t blue_screen_init(void) { extern console_module_info gFrameBufferConsoleModule; // we can't use get_module() here, since it's too early in the boot process if (!frame_buffer_console_available()) return B_ERROR; sModule = &gFrameBufferConsoleModule; sScreen.paging = !get_safemode_boolean( "disable_onscreen_paging", false); sScreen.paging_timeout = false; add_debugger_command("paging", set_paging, "Enable or disable paging"); return B_OK; }