为什么要在kernel space 和 user space, 提供一套相同接口的驱动函数
2011-07-25 16:02
639 查看
应用背景:
数字电视芯片,linux平台
问题1:为什么要在kernel space 和 user space, 提供一套相同接口的驱动函数
解答: 由于设计理念的差异,一些客户需要在kernel space 调用我们的平台sdk api,而另外一些客户则需要在user space 调用我们的sdk api。而这,就需要我们在在kernel space 和 user space分别提供一套函数名称完全相同的SDK API。
eg, designin_audio_start
(1)在kernel space,操作底层硬件,完成audio start功能。函数名称为designin_audio_start
(2)在user space,也存在一个相同的函数designin_audio_start,并最终调用到kernel space的designin_audio_start。
问题2:存在相同的函数名称,会不会在链接的时候,报错?
解答: 不会,运行在不同的空间。链接的时候,只会链接本空间相关的函数库。
问题3:如何实现?
解答:对于/dev/audio设备标准文件接口,主要允许3种操作(open/close/ioctl).
user space的designin_audio_getpid/designin_audio_setpid, 都是调用/dev/audio的ioctl函数,但是参数不同。
在/dev/audio的ioctl函数中,根据参数的不同,最终调用kernel space的designin_audio_getpid/designin_audio_setpid
数字电视芯片,linux平台
问题1:为什么要在kernel space 和 user space, 提供一套相同接口的驱动函数
解答: 由于设计理念的差异,一些客户需要在kernel space 调用我们的平台sdk api,而另外一些客户则需要在user space 调用我们的sdk api。而这,就需要我们在在kernel space 和 user space分别提供一套函数名称完全相同的SDK API。
eg, designin_audio_start
(1)在kernel space,操作底层硬件,完成audio start功能。函数名称为designin_audio_start
(2)在user space,也存在一个相同的函数designin_audio_start,并最终调用到kernel space的designin_audio_start。
问题2:存在相同的函数名称,会不会在链接的时候,报错?
解答: 不会,运行在不同的空间。链接的时候,只会链接本空间相关的函数库。
问题3:如何实现?
解答:对于/dev/audio设备标准文件接口,主要允许3种操作(open/close/ioctl).
user space的designin_audio_getpid/designin_audio_setpid, 都是调用/dev/audio的ioctl函数,但是参数不同。
在/dev/audio的ioctl函数中,根据参数的不同,最终调用kernel space的designin_audio_getpid/designin_audio_setpid
相关文章推荐
- 为什么C语言的同一个文件中可以定义两个接口完全相同的函数?
- 内核的驱动和在cpu的大小端无关,内核提供一套函数来处理大小端的区别
- 为什么两次调用同一函数, 输入相同, 输出却不同呢? (解决困扰自己好几天的问题, 还是有点激动哈, 奖励自己一顿丰厚的晚餐)
- 平台设备驱动中的prob是怎么被调用的?为什么说是bus提供的probe优先调用?
- Discuz论坛内置提供针对移动端开发的json接口/为什么需要自己的论坛不是saas服务
- WINCE流驱动接口函数参数详解
- C#,两个接口相同名称函数调用时的区分
- WINCE流驱动接口函数参数详解
- WinCE中串口驱动及接口函数介绍
- WinCE中串口驱动及接口函数介绍
- WinCE中串口驱动及接口函数介绍
- 编写linux驱动时,为什么要使用copy_from_user函数
- VC6.0下调用Dll文件提供的函数接口和全局变量
- 串口驱动应用程序接口函数
- VC6.0下调用Dll文件提供的函数接口和全局变量(转)
- 编写linux驱动时,为什么要使用copy_from_user函数
- WinCE中串口驱动及接口函数介绍
- java 类implements多个接口含有相同名字函数
- WinCE中串口驱动及接口函数介绍
- WinCE中串口驱动及接口函数介绍