linux
文章平均质量分 63
弯弯的丝瓜
小菜鸟一名
展开
-
mmap 文件不能为空
mmap 文件不能为空void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);int munmap(void *addr, size_t length);mmap 讲过的人太多了。写这篇的目的,是为了记录今天使用过程中遇到的一个问题:当映射内存大小大于文件大小时,将导致映射内存无法读写,程序报段错误;说三遍:文件不能为空!文件不能为空! 文件不能为空!先原创 2021-05-18 23:38:32 · 933 阅读 · 0 评论 -
switch_to 的思考与学习
进程切换, 内核堆栈的切换发生在switch_to这个宏里面。回来也是接着这里执行原创 2020-06-08 00:38:09 · 253 阅读 · 0 评论 -
关于用户态和内核态内存拷贝的思考
陷入内核时,内核指针传入内核以copy_from_user为例内核指针映射用户指针映射基础知识:内核内存地址 3G-4G;用户内存地址 0G-3G虚拟指针的最高两位[00 -11) 说明时用户虚拟地址;最高两位11 内核虚拟地址根据虚拟地址的最高两位 来判断访问TTBR0_EL1 或者TTBR0_EL0; TTBR0_EL 存放页表基地址,达到访问不同的页表的目的。才...原创 2020-05-04 22:29:18 · 3768 阅读 · 0 评论 -
设备树
什么是设备树在Linux3.x之前的内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录。为了解决这个问题而引入设备树。官方对设备树的描述是,一种描述硬件资源的数据结构。它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。设备树的主要优势:对于同一SOC的不同主板,只需更换...转载 2020-05-04 22:18:23 · 1721 阅读 · 0 评论 -
Google test CheatSheet——open source
how to use gtestForDummies-- start here if you are new to Google Mock. CheatSheet-- a quick reference. CookBook-- recipes for doing various tasks using Google Mock. FrequentlyAskedQuestions--...原创 2019-02-21 21:42:08 · 617 阅读 · 0 评论 -
守护进程
1.守护进程启动方法系统初始化脚本启动,/etc目录/etc/rc目录开头的某个目录里。拥有超级用户权限inetd超级服务器启动,inetd有某个脚本启动。cron根据规则定期执行一些程序,这些程序作为守护进程运行at 用于指定将来某个时刻的程序执行,时刻到了由cron启动。用户终端 前台 或者后台都可以启动,用于测试2.通过穿件一个数据包套接字,并绑定log路径名,捆绑...转载 2019-03-01 21:11:54 · 154 阅读 · 0 评论 -
UDP的connect函数-读书笔记
UDP是一个无连接的协议,它没有像TCP中EOF之类的东西。8.11 UDP的connect函数除非套接字已连接,否则异步错误是不会反悔到UDP套接字的。我们确实可以给UDP套接字调用connect,然而这样做的结果却与TCP连接不同的是没有三路握手过程。内核只是检查是否存在立即可知的错误,记录对端的IP地址和端口号,然后立即返回调用进程。对于已连接UDP套接字,与默认的未连接UDP套接...原创 2019-02-16 18:29:29 · 239 阅读 · 0 评论 -
linux 基本操作
一、注意事项 命令和参数之间必需用空格隔开,参数和参数之间也必需用空格隔开。 一行不能超过256个字符;大小写有区分。二、特殊字符含义 文件名以“.”开头的都是隐藏文件/目录,只需在文件/目录名前加“.”就可隐藏它。 ~/ 表示主目录。 ./ 当前目录(一个点)。 ../ 上一级目...原创 2019-02-16 14:53:25 · 250 阅读 · 0 评论 -
linux select函数
使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下!1、select...原创 2019-01-27 16:25:50 · 1600 阅读 · 0 评论 -
Unix 网络编程函数返回值
创建套接字──socket()SOCKET PASCAL FAR socket(int af, int type, int protocol);该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域,:AF_UNIX、AF_INET、AF_NS等,而DOS、 WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族与协议族相同。参数type 描述要建立...原创 2019-01-08 11:05:14 · 402 阅读 · 0 评论 -
linux中的链表容器思想
//include/linux/list.h struct list_head { struct list_head *next, *prev; }; #define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) struct li...原创 2019-01-02 14:07:00 · 180 阅读 · 0 评论 -
Linux网络编程——理解异步I/O
转载:https://www.cnblogs.com/hustcat/archive/2010/04/10/1708909.html 对于服务器程序,I/O是制约系统性能最关键的因素。对于需要处理大量连接的高并发服务器程序,异步I/O几乎是不二的选择。Linux和Windows都为异步I/O构建了大量的基础设施。本文总结了一下Linux和Windows下的异步I/O模型,并给出了一些...转载 2019-01-06 14:33:14 · 800 阅读 · 0 评论 -
Linux网络协议栈——链路层
转载:https://www.cnblogs.com/hustcat/archive/2009/09/22/1572108.html1、接收帧当网络适配器接收到数据帧时,就会触发一个中断,中断处理程序执行一些需要及时处理的任务,然后在下半部进行其它可以延迟的处理。中断处理程序主要进行以下一些操作:(1) 分配sk_buff数据结构,并将接收到的数据帧从网络适配器I/O端口拷贝到sk_...转载 2019-01-06 14:02:59 · 296 阅读 · 1 评论 -
Linux下的I/O
转载//https://www.cnblogs.com/hustcat/archive/2009/09/18/1569661.html Linux的I/O机制经历了一下几个阶段的演进:(1)同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。(2)同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/...转载 2019-01-04 14:32:59 · 158 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket
转载:https://www.cnblogs.com/hustcat/archive/2009/09/17/1568738.html 尊重原创,支持原创1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。而使用TCP/IP 协议的...转载 2019-01-03 15:45:01 · 321 阅读 · 0 评论 -
Unix/Linux系统中的时间
时钟可以说是计算机的心脏,它是分时系统的基础。如果时钟反应到应用程序的层面,就是时间,很多应用程序都会涉及到时间处理。本文就来讨论一下计算机中的时钟与时间。1、操作系统中的时间在Unix/Linux系统中,有两个不同的时间:日历时间和进程时间。有些书上又叫系统时间。该值是自1970年1月1日00:00:00以来国际标准时间(U T C)所经过的秒数累计值(早期的手册称U T C为格林尼治...原创 2018-12-26 20:12:07 · 737 阅读 · 0 评论 -
一起来解coredump
1.什么是coredump一般的coredump文件为ELF格式,coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。许多程序和操作系统出错时会自动生成一个core文件。coredump可以用在很多场合,使用Linux系统在跑一些压力测试或者系统负载一大的话,系统就hang住了或者干脆system panic。这时唯一能帮助你分析和解决问题的就是coredump了。通常...原创 2018-09-03 17:15:58 · 1887 阅读 · 0 评论 -
uboot编译、根文件系统制作、系统移植
uboot学习uboot是DENX开发的BootLoader程序支持linux、VxWorks、qnx下载地址:ftp:ftp.denx.de/pub/u-boot/目录架构 board:支持的开发板 common cpu:处理器核 disk: doc: drivers:驱动 dtt: examples: fs: include:开发板的配置文件 lib net:网络协议的支持 post test...原创 2018-03-26 22:20:21 · 1281 阅读 · 0 评论 -
Linux内核架构及内核裁剪
Linux系统分为内核空间和用户空间;用户空间主要包括:用户应用程序和基本的库文件内核空间主要包括: 系统调用接口SCI:系统封装给用户空间的应用函数调用接口 进程管理PM:管理进程调度 虚拟文件系统VFS:针对各种文件系统封装的统一调用接口层 ...原创 2018-03-22 11:09:53 · 5680 阅读 · 0 评论