LINUX内核
文章平均质量分 86
来自大山的孩子
这个作者很懒,什么都没留下…
展开
-
B:LINUX解析UBOOT传入参数的原理
(会把传入的参数存一个字符串中)LINUX内核源码版本:linux-3.0.86 kernel_entry(0, machid, bd->bi_boot_params);bd->bi_boot_params=0x40000100R0=0,r1=machid,r2=0x40000100.由上节的此函数从UBOOT转入LINUX代继续执行,转入的首地址由vmlinux.ld原创 2016-09-13 15:38:42 · 842 阅读 · 0 评论 -
fasync和kill_fasync机制分析
fasync和kill_fasync机制分析【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 讨论完了信号的大致原理,下面分析信号在驱动中的一个特定应用场景:fasync和kill_fasync是内核信号机制在驱动中的一个应用,低层原理是信号收原创 2016-12-22 20:32:23 · 7802 阅读 · 0 评论 -
LINUX进程与线程概述
进程必需具备如下几个要素,完整的具备了才能称之为进程,否则称之为线程:有一段程序供其执行,就好像一场戏要有一个剧本一样。这段不一定是进程所专用,可以与其它进程共用,就好像不同剧团的许多场演出可以共用一个剧本一样。有起码的“私有财产”,这就是进程专用的系统堆栈空间。有户口,这就是在内核中的一个task_struct数据结构,操作系统教科书中常称为进程控原创 2017-01-07 11:32:55 · 437 阅读 · 0 评论 -
中断上半部和下半部之低半部实现方法-softirq tasklet workqueue
Asmlinkage表示参数传送通过stack来传送而不是寄存器中断种类:一种是由CPU外部产生的,另一种是由CPU本身在执行程序的过程中产生的外部中断:就是通常所讲的中断INTERRUPT,对于执行中的软件来说,这种中断的发生完全是异步的,根本无法预测此类中断会在什么时候发生,因此,CPU或者软件对外部中断的响应完全是被动的。不过,软件可以通过关中断指令关闭对中断的响应,把它反映原创 2017-02-17 09:55:40 · 893 阅读 · 1 评论 -
LINUX设备模型简述
LINUX设备模型的几大基础结构Kobjects【kobject】, Ksets【kset】 Ktype【ktype】 和 Subsystems【subsystem】 Inode--[kset]--------kobjects[驱动设备结构链关系 也可以认为是包含关系]Kobjects是创建SYS/下面文件的用的结构体,其它两个体是配合他完成任务的。可以看成是原创 2017-03-31 11:35:51 · 599 阅读 · 0 评论 -
内存管理与IO访问
内存管理与IO访问原创 2017-03-16 11:36:25 · 849 阅读 · 0 评论 -
多线程下变量原子操作的几种方法
多线程下变量原子操作的几种方法Note:1.2两个方法主要用于应用中【2种操作的性能是第一种的7-8倍,性能上优于第一种】,第三个方法主要应用于驱动层的。线程锁:如下例子: pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&count_lock);原创 2017-05-23 16:51:07 · 1200 阅读 · 0 评论 -
android智能指针之轻量级指针
Android系统提供了三种类型的C++智能指针,分别为轻量级指针(light pointer),强指针(strong pointer)和弱指针(weak pointer)__attribute__((unused)):该属性定义的函数或变量可能不使用 告诉编译器不要产生警告信息在编译的时候C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const原创 2017-05-26 16:51:16 · 617 阅读 · 1 评论 -
LINUX驱动模型中bus与platform_bus区别和异同
LINUX驱动模型中bus与platform_bus区别和异同首先要明确的是platform_bus是BUS的一个字集,也就是说platform_bus是BUS定义的一个总线类型。可以看到platform与其它BUS下的总线是等级的。也就是说platform也是总线的一种。我们可以看到I2C,USB等总线下面都可以挂接多个相关设备,这说明i2c usb等总线是管理这类设备的一个主控原创 2017-07-03 17:04:44 · 1589 阅读 · 0 评论 -
linux驱动之节点创建 class device_create register_chrdev udev misc_register
linux驱动之节点创建class device_create register_chrdev udev misc_register/sys/class/XX这个路径下面的文件是由class_create创建的/sys/class/XX/xx/sys/device/xx这两个路径下面的文件是由device_create创建的/proc/devices/xx这个下面的原创 2017-07-05 11:51:02 · 1068 阅读 · 0 评论 -
ARM原子操作atomic_add详解
ARM原子操作atomic_add详解static inline void atomic_add(int i, atomic_t *v) { unsigned long tmp; int result; prefetchw(&v->counter);-------------------------(2) __a原创 2017-07-06 17:07:40 · 5619 阅读 · 0 评论 -
LINUX驱动异步编程之信号实现梗概
LINUX驱动异步编程之信号实现梗概【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 Linux系统中进程间.进程组内.进程本身当中都可能发生信息交互既通信。信号是实现这种交互的一种方式。内核框架中对于信号的实现有一整套的框架。大体上分为如下几个部原创 2016-12-22 11:43:14 · 565 阅读 · 0 评论 -
android-linux系统调用原理之整体系统框架实现原理之OPEN实现
android-linux系统调用原理之整体系统框架实现原理之OPEN实现.docx【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 对于安桌系统来说系统调用就是指:Andriod层调用Linux函数。由于安桌层在文件系统层,而LINUX层在内核层原创 2016-11-26 14:31:54 · 1872 阅读 · 0 评论 -
C:LINUX如何来使用传入的参数
(由CONSOLE来使用的,既在CONSOLE注册时利用传进来的参数,这个是LINUX内核层的CONSOLE,注意与安桌层及文件系统层的PRINTK的区别。内核层只需要实现输出功能,但前者必须要实现输入输出,以及更复杂的功能)LINUX内核源码版本:linux-3.0.86 Console控制台:对于输入输出设备一个统一管理组件,可以认为是对计算机输入输出设备的封装。我们对原创 2016-09-13 20:29:20 · 1243 阅读 · 0 评论 -
D:LINUX内核层PRINTK实现原理
(最终调用上面注册的CONSOLE来输出调试信息)LINUX内核源码版本:linux-3.0.86 Linux内核层printk函数用于输出内核调试信息。Printk->vprintk->log_prefix->emit_log_char->log_start/log_end->console_unlock->call_console_drivers(_con_start,原创 2016-09-14 09:09:59 · 1092 阅读 · 0 评论 -
/dev/tty /dev/ttyn(0-n) /dev/console区别
原创 2016-09-20 10:43:56 · 1044 阅读 · 0 评论 -
E:安桌层及文件系统层的PRINTf输出原理
(/device/console操控台原理分析,通过调用此操控台来输出信息,同时这儿涉及到/device/console调用TTY,然后TTY调用低层串口的分析 安桌LOG输出原理)LINUX内核源码版本:linux-3.0.86 /dev/console即控制台,是与操作系统交互的设备,系统将一些调试信息直接输出到控制台上,是TTY设备的一个子集 Tty:原创 2016-09-19 16:37:18 · 1010 阅读 · 0 评论 -
Linux并发控制技术
【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 Linux并发控制技术,它的目标是让多个进程访问同一个资源克服其竟态。由现代操作系统都是并发的,例如对同一个资源的读写是并发进行的。为了解决读写的不同步问题,LINUX操作系统引入并发控制技术。这个技术原创 2016-10-13 20:00:34 · 703 阅读 · 0 评论 -
adb 用不了的原因
不能执行的原因是sdk中的adb.exe环境变量没有配置好,导致必须要在platform_tools按装上当中去执行才可以.接着在CMD中执行如下命令就能正使用了。我参考网上教程配置SDK环境变量还是不行。我就不配了直接用目录执行算了。搭建工具比较费时间。网上很多解决上面遇到的问题根本解决不了。说端口被占用,但我通过相关指令并没有占用。(端口被占用的解决办法参考http://jingyan.bai原创 2016-09-28 19:28:31 · 2997 阅读 · 0 评论 -
LINUX系统调用原理-既应用层如何调用内核层函数之软件中断
LINUX系统调用原理-既应用层如何调用内核层函数之软件中断 SWI:software interrupt软件中断 ARM Linux系统利用SWI指令来从用户空间进入内核空间,还是先让我们了解下这个SWI指令吧。SWI指令用于产生软件中断,从而实现从用户模式变换到管理模式,CPSR保存到管理模式的SPSR,执行转移到SWI向量。在其他模式下也可使用SWI指令,处理器同原创 2016-11-16 09:06:14 · 4191 阅读 · 0 评论 -
Linux内核等待队列探究-wait_queue_t-wait_queue_head_t
Linux内核等待队列探究-wait_queue_t-wait_queue_head_t【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 等待队列是LINUX内核实现阻塞访问的方式之一,同时LINUX内核的信号量和完成量都是用等待队列来实现的低层方原创 2016-11-01 13:54:21 · 2557 阅读 · 0 评论 -
LINUX非阻塞访问机制POLL SELECT EPOLL原理分析
LINUX非阻塞访问机制POLL SELECT EPOLL原理分析【相关源码版本:LINUX内核源码版本:linux-3.0.86UBOOT版本:uboot-2010.12.Android系统源码版本:Android-5.0.2】 Linux系统提供几种多种实现非阻塞访问机制(read write操作时不会阻塞,但对于POLL SELECT EPOLL的原创 2016-11-29 10:55:26 · 883 阅读 · 0 评论 -
ARM寄存器一览
原创 2016-11-26 14:30:08 · 457 阅读 · 0 评论 -
安桌Client如何访问server的service,以及service如何访问client的函数
安桌Client如何访问server的service,以及service如何访问client的函数安桌Client如何访问server的service,以及service如何访问client的函数一直以来对于客户端如保访问服务端提供的服务,以及服务如何回调客户端的功能函数弄不清楚,现在有了一知半解,所以记录下业随着学习的推进,慢慢来完善细节,可能细节有错误。【一个车载导航仪的整体框原创 2017-11-14 17:30:10 · 510 阅读 · 0 评论