随笔分类 - kernel
摘要:基于宋宝华ldd中globalmem修改测试。 1)采用container_of()获取设备结构体数据; 2)mutex实现互斥访问。 3)支持子设备(示例中设定为3)。 #include <linux/types.h> #include <linux/kernel.h> #include <lin
阅读全文
摘要:init是用户空间第一个程序,在调用init前程序都运行在内核态,之后运行init时程序运行到用户态。 操作系统上,一些内核线程在内核态运行,它们永远不会进入用户态。它们也根本没有用户态的内存空间。它的线性地址空间就是共享内核的线性地址空间。一些用户进程通常在用户态运行。有时因为系统调用而进入内核态
阅读全文
摘要:What is percpu data? percpu data 是内核为smp系统中不同CPU之间的数据保护方式,系统为每个CPU维护一段私有的空间,在这段空间中的数据只有这个CPU能访问。但是这种方式不提供 对异步函数访问的保护,因此在同一个CPU上还要另外的同步原语的协作。 参考: 1. 多核
阅读全文
摘要:ps进程名有方括号的是内核级的进程,执行辅助功能(比如将缓存写入到磁盘);所有其他进程都是使用者进程。您会注意到,就算是在您新安装的(最小化的)系统中,也会有很多进程在运行。 在文档kernel-per-CPU-kthreads.txt中列出了多核处理器的内核线程: 一般情况下,多核处理器内核线程或
阅读全文
摘要:从用户态进入到内核态的方式一般有三种: 通过系统调用进入,比如printf就是调用write函数 通过软中断进入,常见的是进程突然发生了异常。比如android中的应用crash发生以后,进程就会进入内核态调用中断服务。 通过硬件中断进入,通常是外部设备的中断。当外围设备完成用户的请求操作后,会像C
阅读全文
摘要:引子 首先看一个例子,也可参考linux设备树语法中的gpio示例。该示例选自openwrt的gpio-button-hotblug驱动。 设备树code: 驱动相关code: 该驱动同时注册了两种设备驱动:gpio_keys_driver和gpio_keys_polled_driver,前者采用中
阅读全文
摘要:一、操作外设寄存器延时 Linux读写一个外部寄存器平均耗时0.7us(zynq上测试),使用gpiolib库时延时更长。 #define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; }) #define readw(c) ({ u1
阅读全文
摘要:设备树语法及绑定 概述 Device Tree是一种用来描述硬件的数据结构,类似板级描述语言,起源于OpenFirmware(OF)。 就ARM平台来说,设备树文件存放在arch/arm/boot/dts下,绑定文档存在Documentation/devicetree/bindings下。 设备树由
阅读全文
摘要:参考: 1. Linux下1号进程的前世(kernel_init)今生(init进程) Linux进程的管理与调度(六) 2. linux挂载根文件系统过程 3. BusyBox init工作流程 4. kthreadd-linux下2号进程 linux内核在启动的最后用kernel_thread生
阅读全文
摘要:转自: Linux的命名空间详解--Linux进程的管理与调度(二) Linux Namespaces机制提供一种资源隔离方案。 PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的N
阅读全文
摘要:参考: 1. linux常见进程与内核线程 2. Linux下2号进程的kthreadd--Linux进程的管理与调度(七) 本文中代码内核版本:3.2.0 kthreadd:这种内核线程只有一个,它的作用是管理调度其它的内核线程。这个线程不能关闭。它在内核初始化的时候被创建,会循环运行一个叫做kt
阅读全文
摘要:0. header linux/delay延迟相关函数,长延时ssleep msleep(睡眠等待),短延时mdelay udelay(忙等待)linux/sched.h进程相关的头文件, struct task_struct *进程控制块 linux/kernel.hlinux/module.h
阅读全文
摘要:转自:http://blog.csdn.net/dreaming_my_dreams/article/details/8272586 应用层和驱动的衔接,一直是一个老大难问题,若弄不清楚,总觉得驱动写起来似是而非的。下面就说说我对他们的理解,还有就是如何实现一个驱动支持多个设备的问题。 最主要涉及两
阅读全文
摘要:参考:http://www.cnblogs.com/zym0805/p/4815041.html 一. 硬件数据手册 The ST16C554D is a universal asynchronous receiver and transmitter (UART) with a dual foot
阅读全文
摘要:转自: Linux Core Power Management User's Guide (v3.14) http://processors.wiki.ti.com/index.php/Linux_Core_Power_Management_User's_Guide_(v3.14)?keyMatch
阅读全文
摘要:linux下,所有地址均为虚拟地址,需要由物理地址映射(ioremap或mmap)。//***************************************************************************************************#includ
阅读全文
摘要:http://www.eefocus.com/marianna/blog/cate_18142_0.html?p=2 http://www.eefocus.com/marianna/blog/14-10/306247_821be.html http://blog.csdn.net/21cnbao/a
阅读全文
摘要:建议原博文查看,效果更佳。 转自:http://www.cnblogs.com/wwang/category/269350.html Linux设备模型 (1) 随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的
阅读全文
摘要:一、内核时间概念 1. 了解下linux系统中一些时间概念,在kernel/time/timekeeping.c中定义了多个时间。RTC时间:在PC中,RTC时间又叫CMOS时间,通常由一个专门的计时硬件来实现,软件可以读取该硬件来获得年月日、时分秒等时间信息,而在嵌入式系统中,有使用专门的RTC芯
阅读全文
摘要:9G10中PIT(Periodic Interval Timer)提供OS调度中断,它提供了最高精度和最有效的管理(即使系统长时间响应)。一. 硬件PIT目标是提供OS的周期中断。PIT提供一个可编程溢出计数器和一个reset-on-read特性。它包含两个计数器:20bit CPIV counte
阅读全文
浙公网安备 33010602011771号