linux slab学习】的更多相关文章

https://blog.csdn.net/bullbat/article/details/7194794 https://blog.csdn.net/qq_26626709/article/details/52742484 https://blog.csdn.net/wfreehorse/article/details/61915009 https://www.cnblogs.com/tolimit/p/4566189.html…
http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的.因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux. 这个……还是有点太泛了吧,我…
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert Love,陈莉君等译. 1.进程 进程是正在执行的程序代码的实时结果,包含打开的文件.挂起的信号等.线程是进程中的活动的对象,内核调度的对象是线程.在Linux内核对线程与进程并不加以区分,线程只不过是一种特殊的进程. 2.进程描述符 内核把进程的信息存放在task list的双向循环链表中,链表中的…
转自:https://zohead.com/archives/linux-kernel-learning-memory-management/ 本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/linux-kernel-learning-memory-management/ 接着之前的 Linux kernel 学习步伐,来到极其重要的内存管理部分,继续本文内容,需要先了解内存寻址的基础知识,见之前的 [内存寻址] 博文. 1.内存页及内存区域: 正如…
转自:http://blog.csdn.net/mumufan05/article/details/45803219 学习笔记与个人理解,如有错误,欢迎指正. 温馨提示:建议跟着注释中的编号顺序阅读代码 测试方法:cat /proc/abc_proc echo 任意字符串 >/proc/abc_pro(需root权限) /************************************************* 使用seq_file接口实现可读写proc文件的例子 适用于3.10以后的内…
<Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207398.html 简介 收藏来自网络,最专业的Linux命令大全,内容包含Linux命令手册.Linux命令详解.Linux命令学习.Linux命令行与shell脚本编程大全.Linux命令实例讲解,值得收藏的Linux命令速查手册. 文章 系统管理 文件系统管理 Linux Fork Bomb Comman…
转自:https://zohead.com/archives/linux-kernel-learning-memory-management/ 本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/linux-kernel-learning-memory-management/ 接着之前的 Linux kernel 学习步伐,来到极其重要的内存管理部分,继续本文内容,需要先了解内存寻址的基础知识,见之前的 [内存寻址] 博文. 1.内存页及内存区域: 正如…
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. kmalloc()的底层依赖于__get_free_pages()来实现,分配标志的前缀GFP正好是这个底层函数的缩写. GFP_ATOMIC:在中断处理函数.底半部.tasklet.定时器处理函数以及URB完成函数中,在调用者持有自旋锁或读写锁时以及当驱动将current->state修改为非TASK…
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在三周之前,我偶然的得到了一本<SignalR Programming in Microsoft ASP.NET>,在晚上不工作的时候对这本书进行细细研读(到目前为止大概只研读了一半).虽然目前只有英文原版,但是这本书讲得很不错,即使需要抱着一本词典来辅助阅读,那也是值得的. OWIN的发展,不仅对…
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这一章,我们将对框架与OwinHost之间怎么通过OWIN协议作出解析. 本章我们将讨论学习: (1).连接两世界之门——“Middleware“ (2).转动大门的钥匙,打开无尽的财宝 (3).适配器?转换插头 相关示例代码,可以点击这里进行下载. 1.充当”门“的”Middleware“ 英文名”…
早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OWIN字典,从OwinHost中拿数据进行直接使用. 不过文章发布之后,有朋友提示我,文章出了点细节上的问题,我细细度量之后,发现果然出了情况,并且还不是一个无关紧要的小问题,本打算把那篇文章下线,待修改好之后再重新上线,网友“王爷”提醒到,可以为文章专门写上一篇补充文,这样颇有手稿的感觉.考量之下我接受了王爷…
Linux服务器由于应用变更或需求的缘故,有可能出现分区空间不足的情况,此时往往需要进行扩容(要增加分区的空间),而采用LVM的好处就是可以在不需停机的情况下可以方便地调整各个分区大小.如下所示,分区/u05由于备份集保留的时间调整,RMAN备份时出现空间不足的情况,如下所示, [root@getlnx01 ~]# df -h Filesystem            Size  Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol0…
为什么学习linux 因为操作系统是一种介质,你要接触其中的东西,首先必须要有介质,而linux在服务器端是老大哥的地位,所以呢,学习linux吧. 学习的方式 可以看视频 imooc.百度传课.网易云课堂 等都会有视频的学习资料 学习网站汇总 可以看书籍 dangdang.com, jd.com等网站上购买相应的书籍 可以看网络上的教程 自己搜索相应的教程 linux教程 学习进程,方式:使用网络上的教程 严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机…
之前讲的字符设备驱动程序,只要有一个主设备号,那么次设备号无论是什么都会和同一个 struct file_operations 结构体对应. 而本节课讲的是如何在设备号相同的情况下,让不同的次设备号对应不同的  struct file_operations 结构体. 在本次的驱动程序中,打开/dev/hello0 . /dev/hello1  调用的是hello_open函数.打开/dev/hello2 调用的是 hello2_open 函数.打开其他次设备号的文件,则是打开失败. 驱动程序代码…
一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据.这一层的存在使得上层协议独立于具体的设备.2).网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器.实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构.3).设备…
Nor Flash和Nand Flash的不同: 类型 NOR Flash  Nand Flash  接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简单 复杂 写 复杂 复杂 价格 贵 便宜   无坏块.位反转 有位反转.坏块   存储一些重要的文件 可以出错的文件比如视频 xip 可以 不可以 使用uboot来体验nor Flash操作.(Nor的A0接到Soc的A1上.所以地址应该左移1位.) 1. 读数据(NOR Flash可以像内存一样直…
在Linux平台如何创建一个卷组(VG)呢?下面简单介绍一下卷组(VG)的创建步骤.本文实验平台为Red Hat Enterprise Linux Server release 6.6 (Santiago) 1: 查看当前卷组信息 查看服务器的卷组(VG).物理卷(PV).逻辑卷(LV)相关信息,在此之前,我们先来看看一些基本命令以及用法 vgcan命令介绍 : 查找系统中存在的LVM卷组,并显示找到的卷组列表.vgscan命令仅显示找到的卷组的名称和LVM元数据类型,要得到卷组的详细信息需要使…
NAND FLASH是一个存储芯片. 在芯片上的DATA0-DATA7上既能传输数据也能传输地址. 当ALE为高电平时传输的是地址. 当CLE为高电平时传输的是命令. 当ALE和CLE都为低电平时传输的是数据. 将数据发给nand Flash后,在发送第二次数据之前还要判断芯片是否处于空闲状态.一般是通过引脚RnB来判断,一般是高电平代表就绪,低电平代表正忙. 操作Nand Flash的一般步骤是: 1. 发命令 选中芯片 CLE设置为高电平 在DATA0-DATA7上输出命令值 发出一个写脉冲…
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备:480M/S. PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平. 而设备中的D+D-则是1.5K的上拉电阻.一旦接入PC中,电脑就会知道有设备接入. USB是主从结构.所有的传输都是由主机发起的,即USB设备没有主动通知USB主机的能力. USB的传输类型: 控制传输.…
触摸屏使用流程: 1. 按下产生中断. 2.在中断处理程序中启动AD转换XY坐标. 3.AD转换结束并产生AD中断. 4. 在AD的中断处理函数中上报信息,启动定时器. 5. 定时器时间到后进入中断,处理长按滑动.跳转到第二步 6. 松开. 驱动程序代码: /************************************************************************* > File Name: ts.c > Author: > Mail: > C…
驱动代码: /************************************************************************* > File Name: lcd.c > Author: > Mail: > Created Time: 2016年11月02日 星期三 15时21分59秒 ************************************************************************/ #include…
平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bus的device链表中 ②从bus的drv链表中取出每一个drv,用bus的match函数判断drv能否支持dev. ③如果可以执行,则调用probe函数. driver和device类似. device驱动程序代码: /** * file name: led_dev.c */#include <l…
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定的波动,会让程序进行两次中断,如何解决这个问题呢? 我们可以在发生一次中断之后等待一段时间再去判断按键是否已经被按下,如果是已经被按下了 则本次有效,否则无效.这里用到了定时器. 定时器常用的操作函数有:   init_timer(&timer);   //定时器初始化   timer.data=;…
目的:同一个时刻,只能有一个应用程序打开我们的驱动程序. ①原子操作: v = ATOMIC_INIT( i )  定义原子变量v并初始化为i atomic_read(v)        返回原子变量的值atomic_set(v,i)        设置原子变量的值 atomic_inc_and_test(v)     自加后和测试是否为0  为0则返回trueatomic_dec_and_test(v)     自减后和测试是否为0  为0则返回trueatomic_inc(v) 自加#ato…
之前的按键方式: 查询: 极度占用CPU资源 中断: 在读的时候产生休眠,在没有信号的时候永远不会返回. poll机制: 在中断的基础上加上超时时间. 异步通知就是通过信号来传送. 首先在应用程序中有一个信号处理函数,在应用程序接收到信号时会自动调用信号处理函数. 驱动程序为应用程序提供设置信号量的接口.fcntl函数,会调用到fasync函数 fcntl(fd,F_SETOWN,getpid()); //F_SETOWN告诉内核自己的pid oflags = fcntl(fd,F_GETFL)…
实现的功能是在读取按键信息的时候,如果没有产生按键,则程序休眠在read函数中,利用poll机制,可以在没有退出的情况下让程序自动退出. 下面的程序就是在读取按键信息的时候,如果5000ms内没有按键信息,则自己退出. 首先应用程序执行poll函数 kernel中的sys_poll do_sys_poll init_poll_funcptr-->do_poll do_poll for(;;) { if(do_pollfd(pfd,pt)) { count++; //如果驱动的poll返回非0值,…
轮询方式: 和led驱动不同的是在配置IO引脚的时候,把LED的输出引脚换成输入,在read函数中向外发送io的状态.必须由应用程序不断的来查询当前IO口的状态来判断. 中断方式: /* file name: key.c */#include <linux/sched.h> #include <linux/signal.h> #include <linux/spinlock.h> #include <linux/errno.h> #include <l…
别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚拟内存和文件三个重要抽象管理计算机的CPU.内存.I/O设备. 服务生:为用户提供shell,为程序员提供系统调用. 大家都比较熟悉Windows操作系统,Linux也是一种操作系统.Linux的架构如下图: 如果使用GUI,Linux系统和Windows操作系统的使用没有什么大的区别,用鼠标可以解决大部分问…
一   实验过程及效果 1.准备好相关的代码,分别是mymain.c,mypcb.h,myinterrupt.c ,如下图,make make成功: 在qemu创建的虚拟环境下的运行效果:(使用的命令如上图所示) 效果分析:可以看到进程在不断切换,分别有进程0,1,2,3,每隔一段时间就进行一次切换. 二  具体代码 mypcb.h #define MAX_TASK_NUM 4 //定义最大任务(进程数) #define KERNEL_STACK_SIZE 1024*8 //定义内核堆栈的大小…
首先贴上代码: 字符设备驱动代码: /** *file name: led.c */#include <linux/sched.h> #include <linux/signal.h> #include <linux/spinlock.h> #include <linux/errno.h> #include <linux/random.h> #include <linux/poll.h> #include <linux/init…