Exemplo n.º 1
0
bool_t console_stdio_set(const char * in, const char * out, const char * err)
{
	struct console * cin, * cout, * cerr;

	if(!in || !out || !err)
		return FALSE;

	cin = search_console(in);
	if(!cin || !cin->getcode)
		return FALSE;

	cout = search_console(out);
	if(!cout || !cout->putcode)
		return FALSE;

	cerr = search_console(err);
	if(!cerr || !cerr->putcode)
		return FALSE;

	console_stdin = cin;
	console_stdout = cout;
	console_stderr = cerr;

	return TRUE;
}
Exemplo n.º 2
0
bool_t register_console(struct console * console)
{
	struct console_list * list;

	list = malloc(sizeof(struct console_list));
	if(!list || !console)
	{
		free(list);
		return FALSE;
	}

	if(!console->name || (!console->getcode && !console->putcode) || search_console(console->name))
	{
		free(list);
		return FALSE;
	}

	list->console = console;
	list_add(&list->entry, &console_list->entry);

	if((console_stdin == NULL) && (console->getcode))
		console_stdin = console;

	if((console_stdout == NULL) && (console->putcode))
		console_stdout = console;

	if((console_stderr == NULL) && (console->putcode))
		console_stderr = console;

	return TRUE;
}
Exemplo n.º 3
0
bool_t console_set(const char * name)
{
	struct console_t * c = search_console(name);
	irq_flags_t flags;

	if(c)
	{
		spin_lock_irqsave(&__console_lock, flags);
		__console = c;
		spin_unlock_irqrestore(&__console_lock, flags);
		return TRUE;
	}
	return FALSE;
}
Exemplo n.º 4
0
bool_t unregister_console_uart(struct uart_t * uart)
{
    struct console_t * console;

    console = search_console(uart->name);
    if(!console)
        return FALSE;

    if(!unregister_console(console))
        return FALSE;

    free(console->priv);
    free(console->name);
    free(console);
    return TRUE;
}
Exemplo n.º 5
0
/*
 * unregister framebuffer driver
 */
bool_t unregister_framebuffer(struct fb * fb)
{
	struct chrdev * dev;
	struct console * console;
	struct fb_console_info * info;
	struct fb * driver;
	u8_t brightness;

	if(!fb || !fb->info || !fb->info->name)
		return FALSE;

	dev = search_chrdev_with_type(fb->info->name, CHR_DEV_FRAMEBUFFER);
	if(!dev)
		return FALSE;

	console = search_console((char *)fb->info->name);
	if(console)
		info = (struct fb_console_info *)console->priv;
	else
		return FALSE;

	driver = (struct fb *)(dev->driver);
	if(driver)
	{
		if(driver->ioctl)
		{
			brightness = 0x00;
			(driver->ioctl)(driver, IOCTL_SET_FB_BACKLIGHT, &brightness);
		}

		if(driver->exit)
			(driver->exit)(driver);
	}

	if(!unregister_console(console))
		return FALSE;

	if(!unregister_chrdev(dev->name))
		return FALSE;

	free(info->cell);
	free(info);
	free(console);
	free(dev);

	return TRUE;
}
Exemplo n.º 6
0
bool_t unregister_console_input(struct input_t * input)
{
	struct console_t * console;
	struct console_input_data_t * dat;

	console = search_console(input->name);
	if(!console)
		return FALSE;
	dat = (struct console_input_data_t *)console->priv;

	if(!unregister_console(console))
		return FALSE;

	fifo_free(dat->fifo);
	free(dat);
	free(console->name);
	free(console);
	return TRUE;
}
Exemplo n.º 7
0
bool_t unregister_console_framebuffer(struct fb_t * fb)
{
	struct console_t * console;
	struct console_fb_data_t * dat;

	console = search_console(fb->name);
	if(!console)
		return FALSE;
	dat = (struct console_fb_data_t *)console->priv;

	if(!unregister_console(console))
		return FALSE;

	free(dat->cell);
	free(dat);
	free(console->name);
	free(console);
	return TRUE;
}