随笔分类 -  08.Linux_sys

上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
摘要:项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhe 阅读全文
posted @ 2016-12-26 14:50 qiynet 阅读(984) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/moxiaomomo/article/details/7897943 “quiesce” 说的也不太明确,我的猜测是:比如系统中有一个大功率的设备,在“软关机”的时候,会调用这个函数,可以在这个函数中切断这个设备的电源,从而省电。因为软关机后,机器本身是还有 阅读全文
posted @ 2016-12-19 20:27 qiynet 阅读(313) 评论(0) 推荐(0)
摘要:register_chrdev:Linux2.6.30之前所用,不用定义cdev;但 如果是register_chrdev 注册的话,这个时候,分配的次设备号,是从0~255,这样子的话,就分配的范围太广泛了,浪费严重,register_chrdev_region的话,是指定一个区域,比如说是0~1 阅读全文
posted @ 2016-12-01 17:21 qiynet 阅读(341) 评论(0) 推荐(0)
摘要:在前面helloworld的编写里面,我们使用了两个宏分别是module_init和module_exit,这里分析下为什么使用这两个宏。 在写模块的时候有两个特殊的函数,分别是init_module和cleanup_module,这两个函数分别在insmod的时候和rmmod的时候调用,并且ins 阅读全文
posted @ 2016-11-29 10:26 qiynet 阅读(1071) 评论(0) 推荐(0)
摘要:在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages. 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统 阅读全文
posted @ 2016-11-25 14:33 qiynet 阅读(617) 评论(0) 推荐(0)
摘要:在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发"竞态",因此我们必须对共享资源进行并发控制。Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。 自旋锁与信号量"类似而不类",类似说的是它们功能上的相似性,"不 阅读全文
posted @ 2016-11-25 13:41 qiynet 阅读(1359) 评论(0) 推荐(0)
摘要:Init.h中有相关initcall的启动次序,在system.map中可看出具体的__initcall指针的前后次序 #define pure_initcall(fn) __define_initcall("0",fn,0) #define core_initcall(fn) __define_i 阅读全文
posted @ 2016-11-24 15:19 qiynet 阅读(739) 评论(0) 推荐(0)
摘要:-- 阅读全文
posted @ 2016-11-24 15:18 qiynet 阅读(677) 评论(0) 推荐(0)
摘要:1.头文件 #include //wake_up_process() #include //kthread_create()、kthread_run() #include //IS_ERR()、PTR_ERR()2.实现(kthread_create 与kthread_run区别) linux内核创建线程的方法实质上只有一个:kthread_create,k... 阅读全文
posted @ 2016-11-18 15:04 qiynet 阅读(8799) 评论(0) 推荐(0)
摘要:磁盘与内存的映射就是文件映射,说这个问题之前我们先说下swap,因为 这个问题让我很容易想起swap,linux swap 是交换分区的意思,在内存不 够的情况下,操作系统先把内存与磁盘的swap区进行一个“映射”,然后把 这些内存解放出来放入内存中,为之后的进程的腾出一块内存空间,等到自 己的进程 阅读全文
posted @ 2016-10-20 19:16 qiynet 阅读(323) 评论(0) 推荐(0)
摘要:上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现方式上,内核的高分辨率定时器 阅读全文
posted @ 2016-09-21 09:36 qiynet 阅读(655) 评论(0) 推荐(0)
摘要:1.hrtimers - 为高分辨率kernel定时器,可作为超时或周期性定时器使用 1). hrtimer_init初始化定时器工作模式。 hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); vibe_timer.functi 阅读全文
posted @ 2016-09-21 09:34 qiynet 阅读(629) 评论(0) 推荐(0)
摘要:在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成。 为了最大程度的避免中断处理时间过长而导致中断丢失,有时候我们需要把一些在中断处理中不是非常紧急的任务放在后面执行,而让中断处理程序尽快返回。在老版本的 l 阅读全文
posted @ 2016-09-19 10:11 qiynet 阅读(253) 评论(0) 推荐(0)
摘要:Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式。 用户和组可以看一下上一章的部分,先来看一下权限。 一、权限概览 在Linux下,使用命令ls -l显示文件详细信息 拿第一行来说, 下面主要就【-rwxrw-r--】 来说一下,这里 阅读全文
posted @ 2016-08-19 11:17 qiynet 阅读(285) 评论(0) 推荐(0)
摘要:mfd: multifunction device drivers 多功能设备驱动开发;A product or device that has multiple functions. An example of this might be a printer that also makes cop 阅读全文
posted @ 2016-08-18 18:48 qiynet 阅读(423) 评论(0) 推荐(0)
摘要:【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了 阅读全文
posted @ 2016-07-15 19:09 qiynet 阅读(323) 评论(0) 推荐(0)
摘要:local_irq_disable 仅仅是 设置 当前CPU 的中断屏蔽位 disable_irq 是禁用 全部cpu 中断(只是当前irq) 如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在 <asm/syste 阅读全文
posted @ 2016-07-05 14:34 qiynet 阅读(801) 评论(0) 推荐(0)
摘要:[ 1.atomic_read与atomic_set函数是原子变量的操作,就是原子读和原子设置的作用.2.原子操作,就是执行操作的时候,其数值不会被其它线程或者中断所影响3.原子操作是linux内核中一种同步的方式 ] 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的 阅读全文
posted @ 2016-06-28 11:25 qiynet 阅读(2112) 评论(0) 推荐(0)
摘要:Linux内核日志开关 1、让pr_debug能输出 a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -59,7 +59,7 @@ /* We show everything that is MOREimportant than th 阅读全文
posted @ 2016-06-20 09:47 qiynet 阅读(2242) 评论(0) 推荐(0)
摘要:U-Boot与Linux内核的交互 说明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440。 目录 一、简介 1.1标记列表二、设置标记存放的地址 2.1相关的结构体定义 2.2标记存放地址的设定三、标记的设置 3.1设置标记ATAG_CORE 3.2设置内存标记ATAG_MEM 3 阅读全文
posted @ 2016-06-13 15:54 qiynet 阅读(2482) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
跳至侧栏