LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1168|回复: 8

编程时碰到的问题check_region()

[复制链接]
发表于 2004-2-8 16:38:59 | 显示全部楼层 |阅读模式
刚才写了一小段代码,试一下端口操作的函数
大致如下:

#include<linux/ioport.h>

void main(void)
{
    long port=0x40;
    long len=20;

    if(check_region(port, len) != =)
    {
         printf("....") ;
    }
}

然后编译的时候说:
undefined reference to 'ioport_resource'
undefined reference to '__check_region'

请问这是怎么一回事啊?谢谢
发表于 2004-2-8 17:21:52 | 显示全部楼层


  1. # grep check_region ioport.h
  2. #define check_region(start,n)   __check_region(&ioport_resource, (start), (n))
  3. #define check_mem_region(start,n)       __check_region(&iomem_resource, (start), (n))
  4. extern int __check_region(struct resource *, unsigned long, unsigned long);
复制代码
 楼主| 发表于 2004-2-8 17:56:00 | 显示全部楼层
那要自己实现码?
应该不用吧,这些函数应该是内核已经实现了的吧?
书上的例子都是直接用就可以的了
发表于 2004-2-8 18:10:36 | 显示全部楼层
我上面好象说错了。我改了,不懂呀,我还没学到网络编程。请大家帮帮忙。。
if(check_region(port, len) != =) 这里好象错了吧?后面两个==
发表于 2004-2-8 18:37:17 | 显示全部楼层
check_region(port, len) != =
两个等号?
写错了?
!=后面的内容没有?
check_region是自己定义的函数?
发表于 2004-2-8 18:41:16 | 显示全部楼层
看这里:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2004-2-8 19:34:34 | 显示全部楼层
最后一个=应该是0,我不小心打错了

check_region()是检测端口的函数啊
它的声明包含在头文件<linux/ioport.h>中
但是每次用到它都说没定义,我打开它的头文件
发现只有声明没定义

但是按照《Linux设备驱动程序》说的,
应该是直接可以调用的才对啊
 楼主| 发表于 2004-2-8 19:39:15 | 显示全部楼层
还有,在内核源代码2.4版中也有
__request_region()的代码,也就是说
这个函数是源代码的一部分,是不用我们自己定义的啊

是不是我忘了哪个头文件啊?
发表于 2004-2-9 09:47:42 | 显示全部楼层
连接的时候出错吧,少连了哪个库?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表