社区
Linux_Kernel
帖子详情
内核态进程打开设备的问题
Old123
2007-07-15 07:15:30
我修改了ARM Linux内核,在我修改的代码中有一段是要使用一块FPGA芯片提供的功能,我不知道能不能直接open设备文件,再write和read。如果不能的话我该怎么做才能打开设备。
...全文
247
9
打赏
收藏
内核态进程打开设备的问题
我修改了ARM Linux内核,在我修改的代码中有一段是要使用一块FPGA芯片提供的功能,我不知道能不能直接open设备文件,再write和read。如果不能的话我该怎么做才能打开设备。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Old123
2007-08-31
打赏
举报
回复
有疑问的话,可以和我邮件联系huangxiangli2000@163.com
Old123
2007-08-31
打赏
举报
回复
问题已经解决了,在ULK2第9章的最后有提到如何在内核态使用系统调用。经过试验,可以采用如下的方法:
1.使用_syscallN()宏声明你要使用的系统调用,N是系统调用的参数个数,参考man 2 syscall和linux/unistd.h。
2.你可以像正常使用系统调用一样使用open,write了
Old123
2007-07-23
打赏
举报
回复
可是Linux里面设备是用文件表示的,我要操作设备,只能打开设备文件才行啊。楼上能不能解释下我的困惑
无知者无谓
2007-07-19
打赏
举报
回复
能够直接访问驱动中的函数这我知道,可是我调read,write时文件名用哪个啊?
=====================================================================
那个文件是用来给用户态跟内核态交互用的,它不是一个物理设备
对于你来说操作的应该是“物理设备”而不是用户态的那个“文件名”
Old123
2007-07-18
打赏
举报
回复
能够直接访问驱动中的函数这我知道,可是我调read,write时文件名用哪个啊?
hzcpig
2007-07-17
打赏
举报
回复
就是你找到FPGA的驱动程序代码,直接调用里面的读写函数或者干脆你找到核心代码,直接复制过来做底层操作就可以了。
cpuwolf
2007-07-17
打赏
举报
回复
不行
你是要实现驱动叠加?
在内核中你就是老大,所以你可以直接访问FPGA驱动中的函数
Old123
2007-07-16
打赏
举报
回复
楼上的能不能给个例子或是一些相关的资料,万分感激。
hzcpig
2007-07-16
打赏
举报
回复
应该不行,open和read,write都是用户态打开设备的调用。
如果要在内核态使用设备,应该使用驱动为内核提供的系统调用,或者直接把驱动include进去,直接调用驱动里read,write的相应函数。
Linux0.11
内核
main函数那些事
本课程介绍Linux0.11版本
内核
如何人工设置第一个任务(task 0)以及任务0从
内核
态
切换到用户
态
的详细过程。包括全局描述符表中的TSS0描述符和LDT0描述符的创建过程。与引导过程中全局描述符表及局部描述符表的创建过程构成了一个有机的知识块。在任务0从
内核
态
切换到用户
态
过程中,可以学习到
内核
态
堆栈与用户
态
堆栈概念相关的源代码。课程还会介绍嵌入式汇编的基本语法,帮助进阶
内核
代码阅读。课程最后会介绍,任务0 fork()任务1 init
进程
的过程,以及在
进程
1中使用fork()创建登录shell及交互shell的过程。
Linux用户
态
与
内核
态
通信的几种方式(待完善)
文章目录 Linux 用户
态
和
内核
态
由于 CPU 权限的限制,通信并不像想象中的使用
进程
间通信方式那么简单,今天这篇文章就来看看 Linux 用户
态
和
内核
态
究竟有哪些通信方式。 我们平常在写代码时,一般是在用户空间,通过系统调用函数来访问
内核
空间,这是最常用的一种用户
态
和
内核
态
通信的方式。(关于 Linux 用户
态
和
内核
态
可以参考 xx) 除此之外,还有以下四种方式: procfs(/proc) sysctl(/proc/sys) sysfs(/sys) netlink 套接口 procfs(/proc
Linux
内核
框架之
内核
进程
前言
内核
主要架构由五部分构成:内存管理,
进程
调度和管理,文件系统、
设备
管理和驱动,网络驱动。本系列文希望通过代码实践和参考文章的方式力争对这几个部分做出深入的了解。 目录 前言 一、Linux的
进程
介绍 1.
进程
线程和轻量级
进程
2.
进程
调度的结构组成 二、
进程
的静
态
描述 1.
进程
描述符 2.
进程
链表的维护 2.1运行队列 2.2 等待队列 3.
进程
间关系 4.
进程
切换 一、Linux的
进程
介绍 1.
进程
线程和轻量级
进程
进.............
Linux的
内核
态
与用户
态
引言:最近在看Java内置锁的实现时看到重量级锁的性能开销较大,主要因为使用重量级锁需要用到一个pthread_mutex_lock系统调用,导致Java程序需要在用户
态
和
内核
态
之间切换,由于不太了解用户
态
和
内核
态
到底是什么,所有今天来研究一下。 是什么? Linux体系中
内核
态
与用户
态
是什么? 在Linux操作系统体系中,
进程
被分为2种类型,一种是操作系统自身运行的
内核
类
进程
,也被称为操作系统
进程
;另一种非操作系统
进程
运行在操作系统提供的能力之上的一种用户自定义的程序,我们将其称为用户类
进程
。 如上图所
linux的
内核
、
内核
态
和用户
态
的区别
当一个任务(
进程
)执行系统调用而陷入
内核
代码中执行时,我们就称
进程
处于
内核
运行
态
(或简称为
内核
态
)。此时处理器处于特权级最高的(0级)
内核
代码中执行。当
进程
处于
内核
态
时,执行的
内核
代码会使用当前
进程
的
内核
栈。每个
进程
都有自己的
内核
栈。当
进程
在执行用户自己的代码时,则称其处于用户运行
态
(用户
态
)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序
Linux_Kernel
4,438
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章