![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统函数
文章平均质量分 75
xp_super
这个作者很懒,什么都没留下…
展开
-
Linux 关中断 与 开中断
如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在 中: void local_irq_save(unsigned long flags); void local_irq_disable(void); 对 local_irq_save的调用将把当前中断状态保存到flags中,然转载 2012-10-06 19:41:41 · 6428 阅读 · 0 评论 -
Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OU转载 2012-11-06 10:16:29 · 378 阅读 · 0 评论 -
延时函数
#include 内核空间udelay(int n);//延时n个微妙,1s=1000000微妙.用于比较小的delay.mdelay(int n));//延时n个毫秒,1s=1000微妙.ndelay(int n));//延时n个纳秒,1s=1000000000微妙.这几个函数会让cpu死循环,导致cpu忙等待.usleep(int n);//延时n个微妙,1s=转载 2012-11-02 16:27:17 · 501 阅读 · 0 评论 -
unlikely和likely
主要是跟处理器有关,现在处理器都是流水线的,有些里面有多个逻辑运算单元,系统可以提前取多条指令进行并行处理,但遇到跳转时,则需要重新取指令,这相对于不用重新去指令就降低了速度。所以对unlikely的宏,系统运行时,将减少跳转,重新取指。与assert()是不一样的,assert()是对一个值进行判断,如指针是否为NULL,如果为NULL,则程序直接exit。跟unlikely是不用级别上的东转载 2012-09-25 15:07:12 · 696 阅读 · 1 评论 -
arm内部寄存器读写函数
1.在arch\parisc\include\asm\io.h中定义了如下函数:以下函数用于内存映射static inline void __iomem * ioremap(unsigned long offset, unsigned long size){ return __ioremap(offset, size, _PAGE_NO_CACHE);}#define ioremap_no原创 2012-09-25 15:04:12 · 2207 阅读 · 0 评论 -
BUG 和 BUG_ON
调试的时候很有用的东西:dump_stack 使用前,先在内核配置中把kernel debug选上:make menuconfig:kernel hacking-->kernel debug 作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这些声转载 2012-09-23 16:53:48 · 426 阅读 · 0 评论 -
select函数(二)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等 待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使用Select就可以完成非阻转载 2012-09-22 22:38:11 · 523 阅读 · 0 评论 -
select函数(一)
select函数使我们在SVR4和4.3+BSD之下可以执行I/O多路转接,传向select的参数告诉内核:(1) 我们所关心的描述符。(2) 对于每个描述符我们所关心的条件(是否读一个给定的描述符?是否想写一个给定的描述符?是否关心一个描述符的异常条件?)。(3) 希望等待多长时间(可以永远等待,等待一个固定量时间,或完全不等待)。 对select指定读、写和异常条原创 2012-09-22 22:36:53 · 1951 阅读 · 0 评论 -
access_ok()、_copy_to_user()
一、access_okstatic inline int access_ok(int type, const void *addr, unsigned long size){ extern unsigned long memory_start, memory_end; unsigned long val = (unsigned long)addr;转载 2012-09-22 11:28:39 · 2609 阅读 · 0 评论 -
深入分析request_irq的dev_id参数作用
request_irq的作用是申请使用IRQ并注册中断处理程序。request_irq()函数的原型如下:/* kernel/irq/manage.c */int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long i转载 2012-09-21 23:34:36 · 1814 阅读 · 0 评论 -
request_irq
分类: 零碎 2012-02-22 14:29 157人阅读 评论(0)收藏 举报#include int request_irq(unsigned int irq, void (*handler)(int irq,void dev_id,struct pt_regs *regs), unsigned long flags, const char *dev转载 2012-09-21 23:31:32 · 1026 阅读 · 0 评论 -
dlopen;dlclose;dlsym
Dynamically Loaded (DL)在读HAL相关源码的时候发现这两个函数 简而言之,共享对象通过dlopen动态打开动态库的加载完成后,返回一个句柄,通过dlsym定位到你需要执行的函数指针然后可以在程序中使用 dlopen -- open a dynamically linked library dlsym -- get the address of a sy转载 2012-11-21 23:22:50 · 606 阅读 · 0 评论