gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0.vd_name =3D "fb",
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0.vd_init =3D vt_fb_init,
>> @@ -87,6 +89,24 @@
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*(uint32_t *)(sc->fb_vbase + o=
) =3D v;
>>=C2=A0 }
>>
>> +static int
>> +vt_fb_userioctl(struct vt_device *vd, u_long cmd, caddr_t data)
>> +{
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct vt_fb_userinfo *ui =3D (struct =
vt_fb_userinfo *)data;
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0struct fb_info *info =3D vd->vd_sof=
tc;
>> +
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (cmd !=3D VT_FB_GETINFO)
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (EN=
OIOCTL);
>> +
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ui->width=C2=A0 =3D info->fb_wid=
th;
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ui->height =3D info->fb_height;<=
br>
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ui->depth=C2=A0 =3D info->fb_bpp=
* 8;
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ui->stride =3D info->fb_stride;<=
br>
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ui->size=C2=A0 =C2=A0=3D info->f=
b_size;
>> +
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0return (0);
>> +}
>> +
>>=C2=A0 int
>>=C2=A0 vt_fb_ioctl(struct vt_device *vd, u_long cmd, caddr_t data, =
struct thread
>> *td)
>>=C2=A0 {
>> @@ -125,6 +145,10 @@
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return (ENOTTY);
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0memcp=
y((struct fb_rgboffs *)data, &info->fb_rgboffs,
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0sizeof(struct fb_rgboffs));
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;
>> +
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0case=C2=A0 VT_FB_GETINFO:=C2=A0 =C2=A0=
/* userland framebuffer */
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return vt_=
fb_userioctl(vd, cmd, data);
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break=
;
>>
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0default:
>>
>>
>> ---=C2=A0 =C2=A0---
>> Eduardo Morr=C3=A1s <emorras@emorras.eu>
>>
>>
--00000000000029f88a0641917b95--