QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 603|回复: 1

在模块中可以使用文件操作吗?

[复制链接]
发表于 2003-5-27 15:29:51 | 显示全部楼层 |阅读模式
我想在模块初始化时从文件中读取一些参数,insmod时显示如下:
[root@localhost gxqtest]# insmod hellomodule.o
hellomodule.o: unresolved symbol open
hellomodule.o: unresolved symbol read
hellomodule.o: unresolved symbol lseek
hellomodule.o: unresolved symbol close

是否不能在模块中使用这些文件操作呀?
发表于 2003-5-27 15:53:15 | 显示全部楼层
我知道的有两种方法解决此问题
一是在用户端读文件, 将内容作为module的启动参数传递给module
二是从系统调用表获得open,read系统调用的地址:
<code>
    SysCall_open = sys_call_table[SYS_open];
    SysCall_read = sys_call_table[SYS_read];
    SysCall_close = sys_call_table[SYS_close];

    mm_segment_t FSKernel;
    //保存内核段选器。
    FSKernel = get_fs();
    //设置为用户段选器。
    set_fs(get_ds());

    int fd = SysCall_open(filename, O_CREAT | O_APPEND | O_RDWR);
    SysCall_read(fd, buffer, strlen(buffer));
    SysCall_close(fd);
</code>

以上仅供参考。 内核2.4.18-10以上版本的redhat第二种方法不适用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 19:53 , Processed in 0.057672 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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