# Copyright 2019 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. include include include include resource fd_fb[fd] openat$fb0(fd const[AT_FDCWD], file ptr[in, string["/dev/fb0"]], flags flags[open_flags], mode const[0]) fd_fb openat$fb1(fd const[AT_FDCWD], file ptr[in, string["/dev/fb1"]], flags flags[open_flags], mode const[0]) fd_fb write$fb(fd fd_fb, data ptr[in, array[int8]], len bytesize[data]) read$fb(fd fd_fb, data ptr[out, array[int8]], len bytesize[data]) mmap$fb(addr vma, len len[addr], prot flags[mmap_prot], flags flags[mmap_flags], fd fd_fb, off intptr[0:0x100000, 0x1000]) ioctl$FBIOGET_VSCREENINFO(fd fd_fb, cmd const[FBIOGET_VSCREENINFO], arg ptr[out, array[int8, FB_VAR_SCREENINFO_SIZE]]) ioctl$FBIOPUT_VSCREENINFO(fd fd_fb, cmd const[FBIOPUT_VSCREENINFO], arg ptr[in, fb_var_screeninfo]) ioctl$FBIOGET_FSCREENINFO(fd fd_fb, cmd const[FBIOGET_FSCREENINFO], arg ptr[out, array[int8, FB_FIX_SCREENINFO_SIZE]]) ioctl$FBIOPUTCMAP(fd fd_fb, cmd const[FBIOPUTCMAP], arg ptr[in, fb_cmap_user[in]]) ioctl$FBIOGETCMAP(fd fd_fb, cmd const[FBIOGETCMAP], arg ptr[in, fb_cmap_user[out]]) ioctl$FBIOPAN_DISPLAY(fd fd_fb, cmd const[FBIOPAN_DISPLAY], arg ptr[in, fb_var_screeninfo]) ioctl$FBIOGET_CON2FBMAP(fd fd_fb, cmd const[FBIOGET_CON2FBMAP], arg ptr[in, fb_con2fbmap]) ioctl$FBIOPUT_CON2FBMAP(fd fd_fb, cmd const[FBIOPUT_CON2FBMAP], arg ptr[in, fb_con2fbmap]) ioctl$FBIOBLANK(fd fd_fb, cmd const[FBIOBLANK], arg intptr[FB_BLANK_UNBLANK:FB_BLANK_POWERDOWN]) ioctl$FBIO_WAITFORVSYNC(fd fd_fb, cmd const[FBIO_WAITFORVSYNC], arg const[0]) fb_var_screeninfo { xres flags[fb_xres, int32] yres flags[fb_yres, int32] xres_virtual flags[fb_xres, int32] yres_virtual flags[fb_yres, int32] xoffset int32 yoffset int32 bits_per_pixel flags[fb_bpp, int32] grayscale int32[0:2] red fb_bitfield green fb_bitfield blue fb_bitfield transp fb_bitfield nonstd flags[fb_nonstd, int32] activate flags[fb_activate, int32] height int32 width int32 accel_flags flags[fb_accel_flags, int32] pixclock int32 left_margin int32 right_margin int32 upper_margin int32 lower_margin int32 hsync_len int32 vsync_len int32 sync flags[fb_sync, int32] vmode flags[fb_mode, int32] rotate flags[fb_rotate, int32] colorspace flags[v4l2_colorspace, int32] reserved array[const[0, int32], 4] } fb_activate = FB_ACTIVATE_NOW, FB_ACTIVATE_NXTOPEN, FB_ACTIVATE_TEST, FB_ACTIVATE_VBL, FB_ACTIVATE_ALL, FB_ACTIVATE_FORCE, FB_ACTIVATE_INV_MODE fb_mode = FB_VMODE_NONINTERLACED, FB_VMODE_INTERLACED, FB_VMODE_DOUBLE, FB_VMODE_ODD_FLD_FIRST, FB_VMODE_YWRAP, FB_VMODE_SMOOTH_XPAN, FB_VMODE_CONUPDATE fb_bpp = 0, 1, 2, 4, 8, 15, 16, 24, 32 fb_nonstd = FB_NONSTD_HAM, FB_NONSTD_REV_PIX_IN_B fb_sync = FB_SYNC_HOR_HIGH_ACT, FB_SYNC_VERT_HIGH_ACT, FB_SYNC_EXT, FB_SYNC_COMP_HIGH_ACT, FB_SYNC_BROADCAST, FB_SYNC_ON_GREEN fb_rotate = FB_ROTATE_UR, FB_ROTATE_CW, FB_ROTATE_UD, FB_ROTATE_CCW fb_accel_flags = FB_ACCELF_TEXT fb_xres = 16, 32, 48, 64, 96, 128, 160, 240, 320, 400, 480, 640, 768, 800, 854, 960, 1024, 1280, 1360, 1366, 1400, 1600, 1680, 1920, 2048, 2560, 3200, 3840, 4096, 8192, 15360 fb_yres = 16, 32, 48, 64, 128, 120, 160, 240, 320, 480, 576, 600, 640, 768, 800, 864, 900, 1024, 1152, 1200, 1536, 1600, 2048, 2400, 4096, 8192 type fb_cmap_user[DIR] { start int32 len len[red, int32] # NEED: these should be parallel arrays of the same size. red ptr[DIR, array[int16]] green ptr[DIR, array[int16]] blue ptr[DIR, array[int16]] transp ptr[DIR, array[int16]] } fb_bitfield { offset int32 length int32 msb_right bool32 } fb_con2fbmap { console int32[0:63] framebuffer int32[0:2] } define FB_VAR_SCREENINFO_SIZE sizeof(struct fb_var_screeninfo) define FB_FIX_SCREENINFO_SIZE sizeof(struct fb_fix_screeninfo) _ = __NR_mmap2