![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LiNUX
文章平均质量分 94
cswhl
编码使人快乐
展开
-
Linux内核移植入门
文章目录基本概念内核源码目录结构内核配置主目录Makefile各子目录Makefile如何配置内核?1. 配置仓库选取2.交叉编译器的修改3.体系结构体的选择4.修改配置文件内核编译编译结果:几种linux内核文件的区别开发板上U-Boot启动linux内核内核Kconfig语法使用1.make menuconfig 是如何找到 Kconfig?2.Makefile 要编译一个 .o 文件是如何在Kconfig中配置的?添加驱动到内核概念添加步骤1.将我们开发的驱动 myleddev.c 放到能自述其意的原创 2021-11-21 00:01:31 · 9012 阅读 · 2 评论 -
如何高效学习linux的总结
学习linux的理想方法:先有对linux内核体系的全局视野,然后将子系统一一攻破,实践验证系统调用,最后上开发板移植内核文章目录1.首先建立起内核的大体框架2. 然后选择一个子系统学习3. 动手写代码4. linux学习的几个阶段阶段1阶段2阶段35.区分共性与平台特性6.书籍7.参考资料1.首先建立起内核的大体框架目的:理解各个子系统的设计理念和构建思想,这些理念和思想会从宏观上呈献给你清晰的脉络,就像一个去除了枝枝叶叶的大树的主干,一目了然初步建立起内核子系统框架和代码实现之间的关联: 看原创 2021-11-04 19:33:02 · 515 阅读 · 1 评论 -
目录切换pushd和popd
pushd和popd用于在目录之间切换,它们使用栈的方式来管理目录:dirs显示当前目录栈中所有的目录:╭─cs at css in /home using ╰─ dirs/home ~/tt/test/pkg ~ // 其中/home为目录栈顶dirs : 列出目录栈中所有目录dirs -p : 以列表形式显示目录栈中所有目录dirs -v : 以列表形式为显示的目录增加编号dirs -c : 清空目录栈,但位于栈顶的当前目录是不能被pop出的pushd命令原创 2020-12-27 11:57:22 · 142 阅读 · 0 评论 -
存储器、cache、cache line解析
存储器理想的存储器:速度与CPU的速度一样,这样CPU执行命名就不会受到存储器速度的限制. 但现代存储器无法同时满足三个条件(速度极快、充分大、非常便宜)。存储器类型:寄存器与CPU相同的材料制成,速度与CPU相同;典型容量32位CPU是32 * 32;64位是64 * 64高速缓存cache:多由硬件控制,主要作用是减少CPU访问内存的次数:cache分成多个组,每个组分成多个cache line,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesiz原创 2020-12-20 22:29:43 · 1967 阅读 · 0 评论 -
CPU多核同步原语
程序执行顺序在单个core上,program order是必须遵从;但在多个core上,原子操作保证操作的原子性,要么操作了,要么没有操作。缓存体系现代CPU有多层cache缓存体系,用于提升CPU访问内存的数据的性能。4核执行多线程时,每个核心的L1 cache可能保存了同样的数据拷贝,内存操作顺序指从某个角度观察到的对于内存的读和写所发生的顺序,内存操作顺序并不唯一。内存屏障同步原语smp_mb()、smp_wmb()、smp_rmb()、引入Store Buffer为了防止原创 2020-12-16 16:50:35 · 626 阅读 · 0 评论 -
2.do_select函数分析
do_select函数的运行过程1 先把全部fd扫一遍2 如果发现有可用的fd,跳到53 如果没有,当前进程去睡眠xx秒4 xx秒后自己醒了,或者状态变化的fd唤醒了自己,跳到15 结束循环体,返回核心过程poll_initwait():设置poll_wqueues->poll_table的成员变量poll_queue_proc为__pollwait函数;同时记录当前进程task_struct记在pwq结构体的polling_task。f_op->poll():会调用pol原创 2020-12-16 11:18:59 · 1056 阅读 · 1 评论 -
1.IO multiplexing、select 、core_sys_select
1. 什么是IO multiplexing?IO multiplexing是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。在Linux系统中,常用的IO multiplexing手段有 select、poll 和 epoll。IO multiplexing 主要用于处理网络请求,例如可以把多个请求句柄添加到 select 中进行监听,当有请求可进行IO的时候就会告知进程,并且把就绪的请求句柄保存下来,进程只需要对这些就绪的请求进行IO操作即可。下面通过一幅图来展示 select原创 2020-12-16 11:17:58 · 285 阅读 · 0 评论 -
0.select 系统调用介绍
select 使用文档在:select(2) - Linux manual pageselect介绍select 接口如下:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);select函数的作用:等待多个事件中的任何一个的发生,并且仅当其中一个或几个事件发生时,或经过指定的时间后,才唤醒进程。返回值可以是:ready de原创 2020-12-14 22:54:14 · 208 阅读 · 0 评论 -
linux的signal_pending及signal
signal_pending(3) — The event API1. signal_pending( current )的作用仅检查当前进程是否有信号处理(不会在这里处理信号),返回不为0表示有信号需要处理1.1. 两个信号的概念signal pending:指在信号被处理之前生成信号的状态,是信号生成和信号消除的中间状态signal blocking:指阻塞正在处理的信号,这是一种信号处理方法2. 常规使用场景 if (signal_pending(current)) { ret原创 2020-12-09 23:17:17 · 4978 阅读 · 0 评论 -
3、系统调用之SYSCALL_DEFINE分析
前言为什么要将系统调用定义成宏SYSCALL_DEFINEx?bug CVE-2009-0029,CVE-2010-3301的存在: Linux 2.6.28及以前版本的内核中,将系统调用中32位参数传入64位的寄存器时无法作符号扩展,可能导致系统崩溃或提权漏洞。内核开发者通过将系统调用的所有输入参数都先转化成long类型(64位),再强制转化到相应的类型来规避这个漏洞。SYSCALL_DEFINEx的宏定义// 定义位置:\include\linux\syscalls.h#define SYSC原创 2020-12-09 11:42:35 · 2124 阅读 · 0 评论 -
GUN C中__attribute__作用
attribute__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__语法格式为:attribute ((attribute-list))Declaring Attributes of Functions(声明函数属性)在 GNU C and C++中,可以使用function attributes帮助开发者把一些属性添加到函数声明中,这可帮助编译器优化原创 2020-12-08 11:22:39 · 197 阅读 · 0 评论 -
系统调用之sys_call_table(系统调用表)
sys_call_table中保存了系统调用的处理地址,该表的初始化过程非常巧妙。系统调用程序system_call会查找系统调用表以获得系统调用号对应的系统调用,并执行。sys_call_table初始化sys_call_table的代码// 定义位置:arch/x86/kernel/syscall_32.c#define __SYSCALL_I386(nr, sym, compat) extern asmlinkage void sym(void) ;#include <asm/sys原创 2020-12-07 21:15:35 · 4159 阅读 · 0 评论 -
linux errno3的错误总结
EWOULDBLOCK & EAGAIN出现原因:1、执行non-blocking I/O(非阻塞操作)而该操作不能完成时,会抛出EAGAIN异常(“there is no data available right now, try again later”)2、在非阻塞模式下调用了阻塞操作(如recv),而操作没有正常完成时就会抛出EWOULDBLOCK异常(“your thread would have to block in order to do that”)According t..原创 2020-11-23 11:35:11 · 1534 阅读 · 0 评论