build_embed_linux_system

图形显示FrameBuffer管理框架

struct fb_ops {
    // 图形显示设备的驱动程序的名字
    struct module *owner;

    // 打开帧缓冲设备的回调函数
    int (*fb_open)(struct fb_info *info, int user);

    // 打开帧缓冲设备的回调函数
    int (*fb_release)(struct fb_info *info, int user);

    // 读取帧缓冲设备的回调函数
    ssize_t (*fb_read)(struct fb_info *info, char __user *buf,
                size_t count, loff_t *ppos);

    // 写入帧缓冲设备的回调函数
    ssize_t (*fb_write)(struct fb_info *info, const char __user *buf,
                size_t count, loff_t *ppos);

    // 检查并调整屏幕可变参数以使其符合设备支持的范围
    int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);

    // 设置屏幕可变参数
    int (*fb_set_par)(struct fb_info *info);

    // 设置屏幕颜色寄存器
    int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green,
                unsigned blue, unsigned transp, struct fb_info *info);

    // 设置屏幕调色板
    int (*fb_setcmap)(struct fb_cmap *cmap, struct fb_info *info);

    // 使显示器进入或退出空白模式
    int (*fb_blank)(int blank, struct fb_info *info);

    // 平移显示区域
    int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);

    //  在帧缓冲上绘制矩形
    void (*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);

    // 在帧缓冲上拷贝矩形
    void (*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);
    
    //  在帧缓冲上绘制图像
    void (*fb_imageblit) (struct fb_info *info, const struct fb_image *image);

    // 在帧缓冲上绘制光标
    int (*fb_cursor) (struct fb_info *info, struct fb_cursor *cursor);

    // 等待块传输完成(可选)
    int (*fb_sync)(struct fb_info *info);

    // 执行特定于帧缓冲的 ioctl 命令(可选)
    int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,
            unsigned long arg);

    // 处理 32 位兼容的 ioctl 命令(可选)
    int (*fb_compat_ioctl)(struct fb_info *info, unsigned cmd,
            unsigned long arg);

    // 执行特定于帧缓冲的内存映射
    int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);

    // 根据给定的可变参数获取帧缓冲的能力
    void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
                struct fb_var_screeninfo *var);

    // 释放与帧缓冲相关的所有资源
    void (*fb_destroy)(struct fb_info *info);

    // 在进入 KDB 调试模式时调用,用于准备控制台
    int (*fb_debug_enter)(struct fb_info *info);

    // 在离开 KDB 调试模式时调用,用于恢复控制台
    int (*fb_debug_leave)(struct fb_info *info);
};

next_chapter

返回目录

直接开始下一节说明: 图形显示DRM管理框架