佚名通过本文主要向大家介绍了函数指针赋值,函数指针,函数指针和指针函数,函数指针的用法,c语言函数指针等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 函数指针赋值和字符设备驱动函数为啥能给函数赋值?
描述:
Mdss_fb.c kernel\drivers\video\msm\mdss中:
static struct fb_ops mdss_fb_ops = {
.owner = THIS_MODULE,
.fb_open = mdss_fb_open,
.fb_release = mdss_fb_release,
.fb_check_var = mdss_fb_check_var, /* vinfo check */
.fb_set_par = mdss_fb_set_par, /* set the video mode */
.fb_blank = mdss_fb_blank, /* blank display */
.fb_pan_display = mdss_fb_pan_display, /* pan display */
.fb_ioctl = mdss_fb_ioctl, /* perform fb specific ioctl */ //我们主要关注这行
我看fb_ioctl在Fbmem.c中有定义;
static long fb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
而 mdss_fb_ioct在Mdss_fb.c中有定义:
static int mdss_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
为啥一个函数能够赋给另外一个函数呀?
解决方案1:
描述:
字符设备驱动函数指针
Fbmem.c kernel\drivers\videoMdss_fb.c kernel\drivers\video\msm\mdss中:
static struct fb_ops mdss_fb_ops = {
.owner = THIS_MODULE,
.fb_open = mdss_fb_open,
.fb_release = mdss_fb_release,
.fb_check_var = mdss_fb_check_var, /* vinfo check */
.fb_set_par = mdss_fb_set_par, /* set the video mode */
.fb_blank = mdss_fb_blank, /* blank display */
.fb_pan_display = mdss_fb_pan_display, /* pan display */
.fb_ioctl = mdss_fb_ioctl, /* perform fb specific ioctl */ //我们主要关注这行
我看fb_ioctl在Fbmem.c中有定义;
static long fb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
而 mdss_fb_ioct在Mdss_fb.c中有定义:
static int mdss_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
为啥一个函数能够赋给另外一个函数呀?
解决方案1:
定义成 fb_ioctl 名称的(1)结构体变量,与(2)定义成函数,是两个不同的东东。只不是过是同名罢了!
你可以试着修改 fb_ioctl 的其中一处定义,但需要注意的是也要修改相应的调用处。