haiku/headers/private/kernel/frame_buffer_console.h
Augustin Cavalier f72d1684e5 kernel/debug: Initialize the frame buffer console much earlier, if possible.
Previously it was not initialized until "post-VM", but there are
a number of ways VM initialization can go wrong that it would
be nice to know about without needing a serial port.

On arches which map the whole physical memory into the kernel
address space (x86_64, at least), we can get the bluescreen facility
initialized using KERNEL_PMAP_BASE. On other architectures, we
just fail to init then, and do the usual setup later on.

A slight bit of extra code cleanup in blue_screen_init_early:
we now just call module->info.std_ops() rather than a
frame-buffer-console specific method.
2024-11-19 21:35:31 -05:00

48 lines
1.1 KiB
C

/*
* Copyright 2005-2009, Axel Dörfler, axeld@pinc-software.de.
* Distributed under the terms of the MIT License.
*/
#ifndef KERNEL_FRAME_BUFFER_CONSOLE_H
#define KERNEL_FRAME_BUFFER_CONSOLE_H
#include <console.h>
struct kernel_args;
#define FRAME_BUFFER_CONSOLE_MODULE_NAME "console/frame_buffer/v1"
#define FRAME_BUFFER_BOOT_INFO "frame_buffer/v1"
struct frame_buffer_boot_info {
area_id area;
addr_t physical_frame_buffer;
addr_t frame_buffer;
int32 width;
int32 height;
int32 depth;
int32 bytes_per_row;
uint8 vesa_capabilities;
};
#ifdef __cplusplus
extern "C" {
#endif
bool frame_buffer_console_available(void);
status_t frame_buffer_update(addr_t baseAddress, int32 width, int32 height,
int32 depth, int32 bytesPerRow);
status_t frame_buffer_console_init(struct kernel_args* args);
status_t frame_buffer_console_init_post_vm(struct kernel_args* args);
status_t frame_buffer_console_init_post_modules(struct kernel_args* args);
status_t _user_frame_buffer_update(addr_t baseAddress, int32 width,
int32 height, int32 depth, int32 bytesPerRow);
#ifdef __cplusplus
}
#endif
#endif /* KERNEL_FRAME_BUFFER_CONSOLE_H */