为什么说fb_info->node 是设备的次设备号

来源:互联网 发布:jdk windows x64 下载 编辑:程序博客网 时间:2024/05/16 16:05
struct fb_info{    int node;  //设备的次设备号    int flags;    struct mutex lock;    struct mutex mm_lock;    struct fb_var_screeninfo var; //可变参数    struct fb_fix_screeninfo fix; //固定参数    ......};成员 :         int node; 设备的次设备号        次设备号由系统自动分配,递增的。实际上就是registered_fb[]中第一个空缺项的索引值。        #define FB_MAX 32        struct fb_info *registered_fb[FB_MAX]        所以,最大不会超过31         /*            向核心层注册一个framebuffer设备。            fb_info 每一个帧缓冲设备都对应一个fb_info        */        int register_framebuffer(struct fb_info *fb_info)        {            int i;             /*                这个i,就是次设备号,                下面的代码会将registered_fb[]中第一个空缺项的索引值 赋值给这个i,                而这个索引值就是设备的次设备号            */            ...            /**                FB_MAX : 32                每注册一个framebuffer设备,num_registered_fb就递增一次。            */            if (num_registered_fb == FB_MAX)            {                return -ENXIO;            }            ....            /**                递增            */            num_registered_fb++;            /**                找到registered_fb[]中第一个空缺项                为把fb_info放进去做准备                struct fb_info *registered_fb[32];                /dev/fb0 /dev/fb1 ..... /dev/fb31。            */            for (i = 0 ; i < FB_MAX; i++)            {                if (!registered_fb[i])                {                    break;                }            }            /*                【将次设备号赋值给node】            */            fb_info->node = i;              ....            /**                在类下创建设备。                在fbmem_init()中创建的类。                static int __init fbmem_init(void)                {                    ...                    fb_class = class_create(THIS_MODULE, "graphics");                    ...                }                看这里的 MKDEV(FB_MAJOR, i)            */            fb_info->dev = device_create(fb_class, fb_info->device,MKDEV(FB_MAJOR, i), NULL, "fb%d", i);            if (IS_ERR(fb_info->dev))            {                ...             }            .....        }
0 0