上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 124 下一页
摘要: 一、中断处理为什么要下半部?Linux在中断处理中间中断处理分了上半部和下半部,目的就是提高系统的响应能力和并发能力。通俗一点来讲:当一个中断产生,调用该中断对应的处理程序(上半部)然后告诉系统,对应的后半部可以执行了。然后中断处理程序就返回,下半部会在合适的时机有系统调用。这样一来就大大的减少了中 阅读全文
posted @ 2018-03-08 10:03 qiynet 阅读(453) 评论(0) 推荐(0)
摘要: 这是题目给出的答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位 阅读全文
posted @ 2018-03-05 22:58 qiynet 阅读(493) 评论(0) 推荐(0)
摘要: 因为经常需要和不同的Calling Convention打交道,前段时间整理了一下它们之间的区别,如下: 清理堆栈 参数压栈顺序 命名规则 (MSVC++) 备注 Cdecl 调用者 (Caller) 从右往左 FuncName 因为是调用者清理Stack,因此允许变参 (如printf) Pasc 阅读全文
posted @ 2018-03-05 19:12 qiynet 阅读(251) 评论(0) 推荐(0)
摘要: 不能传递, str还是0; str值为1; 如下例子: -形参 同级别,不能传递; 这样可以; 这其实是一个参数传递的问题.修改变量值需要传递该变量类型的一级指针;修改一级指针指需要传递对应类型的二级指针. 阅读全文
posted @ 2018-03-05 19:10 qiynet 阅读(159) 评论(0) 推荐(0)
摘要: 1 input输入子系统整体流程 本节分析input子系统在内核中的实现,包括输入子系统(Input Core),事件处理层(Event Handler)和设备驱动层。由于上节代码讲解了设备驱动层的写法,因此在开头部分会从设备驱动层做为线索,分析输入子系统和事件处理层是如何配合的,最后从用户角度出发 阅读全文
posted @ 2018-03-04 17:41 qiynet 阅读(450) 评论(0) 推荐(0)
摘要: 1.之前我们学的都是字符设备驱动,先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等 2.接下来本节开始学习块设备驱动 块设备: 块设备是i/ 阅读全文
posted @ 2018-03-03 17:35 qiynet 阅读(459) 评论(0) 推荐(0)
摘要: 1. 基本概念: linux设备驱动开发详解(宋宝华): 字符设备与块设备 I/O 操作的不同如下。 (1)块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位。 大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作。 (2)块设备对于 I/O 请求有对应的缓冲区,因此它们 阅读全文
posted @ 2018-03-03 17:05 qiynet 阅读(319) 评论(0) 推荐(0)
摘要: 在学习块设备原理的时候,我最关系块设备的数据流程,从应用程序调用Read或者Write开始,数据在内核中到底是如何流通、处理的呢?然后又如何抵达具体的物理设备的呢?下面对一个带Cache功能的块设备数据流程进行分析。 1、 用户态程序通过open()打开指定的块设备,通过systemcall机制陷入 阅读全文
posted @ 2018-03-03 16:23 qiynet 阅读(2208) 评论(0) 推荐(0)
摘要: 软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和信号有些类似,同时,软中断又是和硬中断相对应的,硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断(《Linux内核源代码情景分析》第三章) 阅读全文
posted @ 2018-03-02 00:13 qiynet 阅读(581) 评论(0) 推荐(0)
摘要: 学习Linux系统下驱动程序开发已有大半年时间,心中一直有个疑惑:那就是诸如open、write、read等系统调用是怎么和内核或底层驱动建立起联系的呢?今天将自己的一些粗略的理解总结如下。 学过Linux系统下驱动程序开发的都知道,大部分的基础性的驱动操作都包括3个重要的内核数据结构,称为file 阅读全文
posted @ 2018-02-28 12:09 qiynet 阅读(1261) 评论(0) 推荐(0)
摘要: strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。 strace的最简单的用法就是 阅读全文
posted @ 2018-02-27 22:50 qiynet 阅读(415) 评论(0) 推荐(0)
摘要: 1、特权级 Intel x86架构的cpu一共有0~4四个特权级,0级最高,3级最低,ARM架构也有不同的特权级,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查。硬件已经提供了一套特权级使用的相关机制,软件自然要好好利用,这属于操作系统要做的事情,对于UNIX/LINUX来说,只使用了0 阅读全文
posted @ 2018-02-27 17:45 qiynet 阅读(777) 评论(0) 推荐(0)
摘要: void *memcpy(void *dest, const void *src, size_t n); 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. void *memmove( void* dest, const void* src,size_t 阅读全文
posted @ 2018-02-26 18:22 qiynet 阅读(324) 评论(0) 推荐(0)
摘要: shall的过去式是should,但是怎么和情态动词的should区分啊,答得好我会提高悬赏!!! 阅读全文
posted @ 2018-01-21 18:57 qiynet 阅读(3952) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2018-01-16 16:57 qiynet 阅读(0) 评论(0) 推荐(0)
上一页 1 ··· 51 52 53 54 55 56 57 58 59 ··· 124 下一页
跳至侧栏