社区
Linux_Kernel
帖子详情
如何在用户态调用内核态的函数?
fesir
2007-06-18 06:23:51
在一个module中,已经编写一组函数,并且EXPORT_SYMBOL之。但是想被一个用户态的应用程序,目的是为了让用户态把某个参数传进来。直接调用或syscall都未能作用。本人刚开始KERNEL开发,请指教。
应用程序在编译连接过程中,总会有UNDEFINED REFERENCE.
...全文
1132
7
打赏
收藏
如何在用户态调用内核态的函数?
在一个module中,已经编写一组函数,并且EXPORT_SYMBOL之。但是想被一个用户态的应用程序,目的是为了让用户态把某个参数传进来。直接调用或syscall都未能作用。本人刚开始KERNEL开发,请指教。 应用程序在编译连接过程中,总会有UNDEFINED REFERENCE.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DanXer
2007-06-27
打赏
举报
回复
insmod时可以作为模块参数传,运行时ioctl也可以传。
cherishhu
2007-06-27
打赏
举报
回复
可以用syscall来实现,但是光EXPORT_SYMBOL是不行的,要在calls.S中把你的那个函数添加进来
jacky_emdoor
2007-06-27
打赏
举报
回复
LZ的这种需求很正常
我通常的做法是
在内核模块中实现IOCTL,而在这个IOCTL里调用你在内核中导出的函数
在应用程序中
你调用这个IOCTL就可以了
很方便的
webycn
2007-06-25
打赏
举报
回复
ioctl();
OstrichFly
2007-06-22
打赏
举报
回复
用procfs简单
用户态程序打开/proc/file,然后往里面写控制符就可以了
wind_tuxr
2007-06-21
打赏
举报
回复
linux设备驱动开发群42013154
zzx4493
2007-06-18
打赏
举报
回复
EXPORT_SYMBOL的作用是把函数导出到内核符号表里面,从而提供给内核里面的其他文件(模块)使用。不是用来给用户态的程序调用的!这种想法就是危险的!
另外,如果说像使用自己定义的系统调用的话,可以参见lkd第五章的内容。里面说的很清楚。
其实一般情况下完全不需要通过诸如添加系统调用的方法来实现所谓的“为了让用户态把某个参数传进来”这样的功能。有太多的其他(也是常规的办法)。比如说你写个驱动模块,用procfs, etc.关键看需求。
[14本经典Android开发教程]-8-Linux
内核
阅读心得体会
[14本经典Android开发教程] 8 Linux
内核
阅读心得体会 读核感悟 2 读核感悟 Linux
内核
启动
内核
的生成 2 读核感悟 Linux
内核
启动 从hello world说起 3 读核感悟 Linux
内核
启动 BIOS 5 读核感悟 Linux
内核
启动 setup辅助程序 6 读核感悟 Linux
内核
启动
内核
解压缩 8 读核感悟 Linux
内核
启动 开启页面映射 9 读核感悟 Linux
内核
启动 链接脚本 11 读核感悟 伪装现场 系统
调用
参数 13 读核感悟 伪装现场 fork 系统
调用
15 读核感悟 伪装现场
内核
线程: 17 读核感悟 伪装现场 信号通信 19 读核感悟 kbuild系统
内核
模块的编译 22 读核感悟 kbuild系统 编译到
内核
和编译成模块的区别 24 读核感悟 kbuild系统 make bzImage的过程 26 读核感悟 kbuild系统 make menuconfig 31 读核感悟 文件系统 用C来实现面向对象 32 读核感悟 设计模式 用C来实现虚
函数
表和多
态
32 读核感悟 设计模式 用C来实现继承和模板 33 读核感悟 设计模式 文件系统和设备的继承和接口 34 读核感悟 设计模式 文件系统与抽象工厂 36 读核感悟 阅读源代码技巧 查找定义 37 读核感悟 阅读源代码技巧 变量命名规则 42 读核感悟 内存管理
内核
中的页表映射总结 43 读核感悟 健壮的代码 exception table
内核
中的刑事档案 44 读核感悟 定时器 巧妙的定时器算法 45 读核感悟 内存管理 page fault处理流程 45 读核感悟 文件读写 select实现原理 47 读核感悟 文件读写 poll的实现原理 49 1 功能介绍: 49 2 关键的结构体: 49 3 poll的实现 49 4 性能分析: 50 读核感悟 文件读写 epoll的实现原理 50 1 功能介绍 50 2 关键结构体: 51 3 epoll create的实现 53 4 epoll ctl的实现 53 5 epoll wait的实现 54 6 性能分析 54 读核感悟 同步问题 同步问题概述 55 1 同步问题的产生背景 55 2
内核
态
与
用户
态
的区别 55 读核感悟 同步问题
内核
态
自旋锁的实现 56 1自旋锁的总述 56 2非抢占式的自旋锁 56 3 锁的释放 57 4 与
用户
态
的自旋锁的比较 57 5 总结 58 读核感悟 内存管理 free命令详解 58 读核感悟 文件读写 2 6 9
内核
中的AIO 59 1 AIO概述 59 2
内核
态
AIO的使用 61 读核感悟 文件读写
内核
态
AIO相关结构体 61 1
内核
态
AIO操作相关信息 61 2 AIO上下文: 63 3 AIO ring 63 4 异步I O事件的返回信息 64 读核感悟 文件读写
内核
态
AIO创建和提交操作 65 1 AIO上下文的创建 io setup 65 2 AIO请求的提交:io submit实现机制 66 读核感悟 文件操作 AIO操作的执行 66 1 在提交时执行AIO 66 2 在工作队列中执行AIO 66 3 负责AIO执行的核心
函数
aio run iocb 67 4 AIO操作的完成 67 读核感悟 文件读写
内核
态
是否支持非direct I O方式的AIO 67 已上传7本: [14本经典Android开发教程] 1 Android开发从入门到精通 http: download csdn net detail cleopard 8355245 [14本经典Android开发教程] 2 Android开发手册 API
函数
详解 http: download csdn net detail cleopard 8374487 [14本经典Android开发教程] 3 Android SDK 中文开发文档 http: download csdn net detail cleopard 8380429 [14本经典Android开发教程] 4 Android应用程序开发36技 http: download csdn net detail cleopard 8380495 [14本经典Android开发教程] 5 linux Android基础知识总结 http: download csdn net detail cleopard 8380529 [14本经典Android开发教程] 6 Android驱动开发入门及手机案例开发分析教程 http: download csdn net detail cleopard 8388019 [14本经典Android开发教程] 7 Android编程入门教程 http: download csdn net detail cleopard 8388043 剩余8本稍后上传 @或直接从这里寻找@ http: download csdn net user cleopard album @更多@ http: cleopard download csdn net 福利 http: xuemeilaile com 17份软件测试文档 http: download csdn net album detail 1425 13份WPF经典开发教程 http: download csdn net album detail 1115 C#资料合辑二[C#桌面编程入门篇] http: download csdn net album detail 957 C#资料合辑一[C#入门篇] http: download csdn net album detail 669 [Csharp高级编程 第6版 ] 共8压缩卷 http: download csdn net album detail 667 10个[精品资源]Java学习资料合辑[一] http: download csdn net album detail 663 10个C#Socket编程代码示例 http: download csdn net album detail 631 6份GDI+程序设计资源整合[全零分] http: download csdn net album detail 625 2014年移动游戏行业数据分析 http: download csdn net detail cleopard 8340331 一文读懂2014年全球互联网广告新生
态
http: download csdn net detail cleopard 8340303">[14本经典Android开发教程] 8 Linux
内核
阅读心得体会 读核感悟 2 读核感悟 Linux
内核
启动
内核
的生成 2 读核 [更多]
在
用户
空间
调用
内核
函数
的方法
前一段时间自己也在为如何在
用户
空间
调用
自己编写的
内核
函数
的方法而苦恼,正好今天下午小师弟也问到了相关的问题,便把自己关于这个问题的两种解决方法总结一下。 在
用户
态
调用
内核
函数
的最简单的方法就是系统
调用
,通过系统
调用
,
用户
进程进入
内核
态
完成
内核
函数
的相关工作。但是,当你无法使用现有的
内核
函数
而需要自己重新设计
内核
函数
功能的时候,这个方法就不能很好的使用了,于是便想到了通过以下两种方法来
Linux 操作系统:
用户
态
与
内核
态
函数
调用
文章目录1
用户
态
函数
栈2
内核
态
函数
栈3 通过 task_struct 找
内核
栈4 通过
内核
栈找 task_struct5 总结 在编译程序时,编译器会将程序编译为如下结构加载到内存中执行。 过程参考进程: 代码段:保存程序文本,指令指针 EIP 就是指向代码段,可读可执行不可写 数据段:保存初始化的全局变量和静
态
变量,可读可写不可执行 BSS:未初始化的全局变量和静
态
变量 堆(Heap):动
态
分配内存,向地址增大的方向增长,可读可写可执行 栈(Stack):存放局部变量,
函数
参数,当前状
态
,
函数
调用
信
Linux系统
调用
怎么
调用
到
内核
态
函数
的
Linux系统
调用
怎么
调用
到
内核
态
函数
的
用户
态
应用程序App在编写代码时,使用open/read/write等系统
调用
进行文件操作。 系统
调用
向下
调用
glibc库中与open/read/write相关的接口
函数
。 无论是App还是glibc都是出于Linux
用户
态
,怎么切换到Linux
内核
态
呢?对于32位ARM处理器,需要使用swi指令;对于64位ARM处理器,需要svc指令。 在切换到
内核
态
后,
内核
怎么知道你是从glibc的open接口进来的还是从glibc的read接口进来的呢?这就需要在切换时
用户
态
open
函数
如何
调用
内核
态
open
函数
1.图示 首先使用华清远见的一张图式,比较清晰,本文会从
用户
态
到
内核
态
进行大致的分析 2.虚拟文件系统简介 在Linux系统中,对文件的操作抽象为对虚拟文件系统的操作,虚拟文件系统屏蔽了底层逻辑,使用多
态
的方式将不同的文件系统的操作接口赋值给虚拟文件系统,从而使得对文件的操作变为对虚拟文件系统的操作.每一个文件都用一个inode结点表示。在Linux系统中一个进程使用一个task_struct结构体表示,其中有一个抽象对象为file_struct指针,对于进程中的文件进行管理,在file_struct中有
Linux_Kernel
4,469
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章