当前位置:  技术问答>linux和unix

请教一个linux字符设备文件的问题

    来源: 互联网  发布时间:2016-11-11

    本文导语:  我刚开始学习内核编程,看的是The Linux Kernel Module Programming Guide,2.6版的,并且重新编译了内核2.6.36。我编译Example4-1.chardev.c那个程序的时候出现了以下的问题: chardev.c:In function init_module: chardev.c:30:error:implicit de...

我刚开始学习内核编程,看的是The Linux Kernel Module Programming Guide,2.6版的,并且重新编译了内核2.6.36。我编译Example4-1.chardev.c那个程序的时候出现了以下的问题:
chardev.c:In function init_module:
chardev.c:30:error:implicit declaration of function register_chrdev
chardev.c:In function cleanup_module:
chardev.c:47:error:implicit declaration of function unregister_chrdev
chardev.c:At top level:
chardev.c:54:warning:struct inode declared inside parameter list
chardev.c:54:error:conflicting types for device_open
chardev.c:8:error:prevoius declaration of device_open was here
chardev.c:66:warning:struct inode declared inside parameter list
chardev.c:66:error:conflicting types for device_release
chardev.c:9:error:prevoius declaration of device_release was here
chardev.c:89:error:conflicting types for device_write
chardev.c:11:error:prevoius declaration of device_write was here
请问各位高手是什么原因?非常感谢!

源代码如下:
/*
 *  chardev.c: Creates a read-only char device that says how many times
 *  you've read from the dev file
 */
#include 
#include 
#include 
#include         /* for put_user */
/*  
 *  Prototypes - this would normally go in a .h file
 */
int init_module(void);
void cleanup_module(void);
static int device_open(struct inode *, struct file *);
static int device_release(struct inode *, struct file *);
static ssize_t device_read(struct file *, char *, size_t, loff_t *);
static ssize_t device_write(struct file *, const char *, size_t, loff_t *);
#define SUCCESS 0
#define DEVICE_NAME "chardev"   /* Dev name as it appears in /proc/devices   */
#define BUF_LEN 80              /* Max length of the message from the device */
/* 
 * Global variables are declared as static, so are global within the file. 
 */
static int Major;               /* Major number assigned to our device driver */
static int Device_Open = 0;     /* Is device open?  
                                 * Used to prevent multiple access to device */
static char msg[BUF_LEN];       /* The msg the device will give when asked */
static char *msg_Ptr;
static struct file_operations fops = {
        .read = device_read,
        .write = device_write,
        .open = device_open,
        .release = device_release
};
/*
 * This function is called when the module is loaded
 */
int init_module(void)
{
        Major = register_chrdev(0, DEVICE_NAME, &fops);
        if (Major  /dev/hello 
 */
static ssize_t
device_write(struct file *filp, const char *buff, size_t len, loff_t * off)
{
        printk(KERN_ALERT "Sorry, this operation isn't supported.n");
        return -EINVAL;
}

|
linux-2.6.23版本上把这个返回值从int改为void了。

commit e53252d97e670a38b1d2e9723b48077bba11ddda
Author: Akinobu Mita 
Date:   Thu Jul 19 01:47:51 2007 -0700

    unregister_chrdev() return void
    
    unregister_chrdev() does not return meaningful value.  This patch makes it
    return void like most unregister_* functions.
    
    Signed-off-by: Akinobu Mita 
    Signed-off-by: Andrew Morton 
    Signed-off-by: Linus Torvalds 

    
 
 

您可能感兴趣的文章:

  • 请教:什么命令可以把一个文件中的某个字符用另一个字符替换
  • 请教:怎么在sh中替换一个字符串中的某个字符
  • 请教,有关16进制字符串形成2进制字符串的问题!
  • 怎样取得字符串中的字符?高分请教!!!
  • 请教一个查找字符的脚本。急用!!
  • 请教一个字符编码转换问题
  • 高分请教字符串编码问题
  • 请教一个shell中字符和数值的问题。
  • 请教高手AIX中怎么删除行尾的字符^M
  • 请教如何更改rh7.2(字符模式)下机器的名字?
  • 请教UNIX字符界面开发问题~
  • 请教 提取字符串 脚本怎么写?
  • 急请教高手,shell命令计算字符串个数
  • 高手请教如何取一字符串的长度(不是字节长度)
  • 请教!关于linux字符驱动程序
  • 请教:Java 中数字字符串转化为数字的问题
  • 请教字符串的问题!!急!急!
  • 请教关于文本字符串的提取的命令
  • 请教用什么命令:能去掉UNIX下某个目录(及其子目录)下所有*.htm文件内容中的“abcd”字符串
  • 请教各位大侠如何察看和修改linux的默认字符集?
  • 请教: 如何用tar.gz格式的文件升级.rpm的文件
  • 请教为什么要运行一个可执行文件要以./文件名 的形式来运行?
  • 请教如何比较两个文件夹下所有子目录里的文件是否一样?
  • 请教:如何选择拷贝出目录里面部分文件?文件名格式见内
  • 请教:哪里有将CLASS文件反编译为JAVA文件的软件???
  • 用word2000将文档存为纯文本文件,所得文本文件不满足AScii标准?请教。
  • 请教一个文件 .bin文件改如何打开?
  • 请教:shell遍历文件夹,处理其中的文件。
  • 请教,Makefile目标文件要通配目录下所有C文件,如何写?
  • 请教:在程序中创建文件夹,应该用什么函数?怎么判断文件夹存不存在呢?
  • 请教:当压缩文件解压后,得到下面的文件,我应该安装哪一个呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题
  • 请教unix常用命令命令问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3