/* * 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; }
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; }