Beispiel #1
0
/*
 * file_operations
 */
static int vc_open(struct node *node, struct file_desc *desc, int flags) {
	struct vterm_video *vc_vga;

	vc_vga = vc_vga_init();

	vterm_init(&vc_vterm, vc_vga, NULL);

	vterm_open_indev(&vc_vterm, "keyboard");

	assert(desc);

	idesc_init(&desc->idesc, &idesc_vc_ops, S_IROTH | S_IWOTH);
	vc_vterm.tty.idesc = &desc->idesc;

	return 0;
}
Beispiel #2
0
static int make_task(int i, char innewtask) {
	struct fbcon *fbcon = &fbcons[i];
	int ret;

	fbcon->vc_this.callbacks = &thiscbs;
	fbcon->fbcon_disdata = &fbcon_displ_data;

	vterm_video_init(&fbcon->vterm_video, &fbcon_vterm_video_ops,
			0, 0);

	vterm_init(&fbcon->vterm, &fbcon->vterm_video, NULL);

	if (0 > (ret = mpx_register_vc(&fbcon->vc_this))) {
		return ret;
	}

	if (innewtask) {
		return new_task("vc", run, &fbcons[i]);
	}

	run(fbcon);

	return 0;
}