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--