易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 用户层如何调用接口设置寄存器

下面的代码分析是根据linux-2.6.17.14_stm22版本
#define STSYS_WriteRegDev32LE(Address_p, value)          writel((u32)value, (void*)Address_p)
在include/asm-sh/io.h
#define writel(v,a) ({__raw_writel((v),(a));mb();})
#define __raw_write(v,a)  __writel((v),(void __iomem *)(a))
#define __writel(v,a) sh_mv.mv_writel(v,a)
在arch/sh/kernel/setup.c中把sh_mv.mv_writel->generic_write1
在arch/sh/kernel/io_generic.c中
void generic_writel(U32 b, void __iomem *addr)
{
         ctrl_outl(b,(unsigned long __force)addr);
}
在include/asm-sh/io.h
static inline void ctrl_outl(unsigned inst b,unsigned long addr)
{
      *(volatile unsigned long *)addr = b;
}
存在一个疑问:
最后是从用户空间直接设置寄存器,但能这样直接赋值吗? 不通过MM吗?


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

Linux kernel Development second Edition

1. Technically speaking, and in this book, the operating
system
is considered the parts of the system responsible for basic use
and administration. This includes the kernel and device drivers, boot loader,
command shell or other user interface, and basic file and system utilities ......

LINUX进程管理

1. 进程是什么?
一个进程就是出于执行期的程序, 包括:可执行程序代码(代码段), 打开的文件, 挂起的信号, 内核内部数据, 处理器状态, 地址空间, 一个或多个执行线程, 当然还包括用来存放全局变量的数据段, 等等.
 
2. 什么是线程?它和进程的关系是什么样的? 线程在LINUX中具体是怎么样实现的?
是在进程中活动的对象 ......

原创:纠正国人对Linux的误解和错误认识

错误印象和认识罗列如下,一一解释:
1。linux下的软件太少
回答:linux 下的软件一点也不少。windows还在娘肚子里的时候,Unix已经如日中天了。要知道微软公司开发的第一个操作系统是什么吗?是一个叫做Xenix的东西,是Unix的一个分支,后来才去搞DOS的。有人又问了,Unix不是Linux阿,要知道,Linux完全重新的实现了Uni ......

linux中的块设备和字符设备

      系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。
& ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号