首页 > 系统服务
linux内存池
在内核中有不少地方内存分配不允许失败. 作为一个在这些情况下确保分配的方式, 内核 开发者创建了一个已知为内存池(或者是 "mempool" )的抽象. 一个内存池真实地只是一 类后备缓存, 它尽力一直保持一个空闲内存列表给紧急时使用. 一个内存池有一个类型 mempool_t ( 在 <linux ...
分类:系统服务   时间:2019-07-06 12:58:56    收藏:0  评论:0  赞:0  阅读:117
linux /proc 接口
无论何时一个硬件中断到达处理器, 一个内部的计数器递增, 提供了一个方法来检查设备 是否如希望地工作. 报告的中断显示在 /proc/interrupts. 下面的快照取自一个双处理 器 Pentium 系统: root@montalcino:/bike/corbet/write/ldd3/src/ ...
分类:系统服务   时间:2019-07-06 12:58:36    收藏:0  评论:0  赞:0  阅读:90
linux 在启动时获得专用的缓冲
如果你真的需要一个大的物理上连续的缓冲, 最好的方法是在启动时请求内存来分配它. 在启动时分配是获得连续内存页而避开 get_free_pages 施加的对缓冲大小限制的唯一 方法, 不但最大允许大小还有限制的大小选择. 在启动时分配内存是一个"脏"技术, 因为 它绕开了所有的内存管理策略通过保留一 ...
分类:系统服务   时间:2019-07-06 12:57:42    收藏:0  评论:0  赞:0  阅读:94
linux获知当前时间
内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代 表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统 的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中 ...
分类:系统服务   时间:2019-07-06 12:54:36    收藏:0  评论:0  赞:0  阅读:113
Push rejected: Push master to origin/master was rejected by remote(IDEA、MAC、GIT)
Push rejected: Push master to origin/master was rejected by remote 第一步 在IDEA的 Terminal 终端里面输入下面的指令 第二步 复制第一个(也就是最新的commit_id) 例如我的: PS:复制后 英文状态下 按Q 结束 ...
分类:系统服务   时间:2019-07-06 12:53:13    收藏:0  评论:0  赞:0  阅读:150
vim
插件管理:vundle 简介 https://github.com/VundleVim/Vundle.vim Vundle是vim的一个插件管理软件,安装方式是直接clone github上的文件到 ~.vim/bundle/Vundle.vim 目录(目录不存在可以手动创建)。 配置 按照gith ...
分类:系统服务   时间:2019-07-06 12:42:08    收藏:0  评论:0  赞:0  阅读:121
linux 快速和慢速处理
老版本的 Linux 内核尽了很大努力来区分"快速"和"慢速"中断. 快速中断是那些能够很 快处理的, 而处理慢速中断要特别地长一些. 慢速中断可能十分苛求处理器, 并且它值得 在处理的时候重新使能中断. 否则, 需要快速注意的任务可能被延时太长. 在现代内核中, 快速和慢速中断的大部分不同已经消失 ...
分类:系统服务   时间:2019-07-06 12:40:00    收藏:0  评论:0  赞:0  阅读:111
linux I/O 内存分配和映射
I/O 内存区必须在使用前分配. 分配内存区的接口是( 在 <linux/ioport.h> 定义): struct resource *request_mem_region(unsigned long start, unsigned long len, char *name); 这个函数分配一个 ...
分类:系统服务   时间:2019-07-06 12:38:25    收藏:0  评论:0  赞:0  阅读:123
linux 内核协助的探测
Linux 内核提供了一个低级设施来探测中断号. 它只为非共享中断, 但是大部分能够在共 享中断状态工作的硬件提供了更好的方法来尽量发现配置的中断号.这个设施包括 2 个函 数, 在<linux/interrupt.h> 中声明( 也描述了探测机制 ). unsigned long probe_ir ...
分类:系统服务   时间:2019-07-06 12:35:40    收藏:0  评论:0  赞:0  阅读:108
linux I/O 端口分配
如同你可能希望的, 你不应当离开并开始抨击 I/O 端口而没有首先确认你对这些端口有 唯一的权限. 内核提供了一个注册接口以允许你的驱动来声明它需要的端口. 这个接口中 的核心的函数是 request_region: #include <linux/ioport.h> struct resource ...
分类:系统服务   时间:2019-07-06 12:33:09    收藏:0  评论:0  赞:0  阅读:85
linux一个例子驱动
我们介绍的驱动称为 short (Simple Hardware Operations and Raw Tests). 所有它做 的是读和写几个 8-位 端口, 从你在加载时选择的开始. 缺省地, 它使用分配给 PC 并口 的端口范围. 每个设备节点(有一个独特的次编号)存取一个不同的端口. sho ...
分类:系统服务   时间:2019-07-06 12:31:59    收藏:0  评论:0  赞:0  阅读:92
linux 存取 I/O 内存
在一些平台上, 你可能逃过作为一个指针使用 ioremap 的返回值的惩罚. 这样的使用不 是可移植的, 并且, 更加地, 内核开发者已经努力来消除任何这样的使用. 使用 I/O 内 存的正确方式是通过一系列为此而提供的函数(通过 <asm/io.h> 定义的). 从 I/O 内存读, 使用下列之一 ...
分类:系统服务   时间:2019-07-06 12:31:39    收藏:0  评论:0  赞:0  阅读:116
linux 自动检测 IRQ 号
驱动在初始化时最有挑战性的问题中的一个是如何决定设备要使用哪个 IRQ 线. 驱动需 要信息来正确安装处理. 尽管程序员可用请求用户在加载时指定中断号, 这是个坏做法, 因为大部分时间用户不知道这个号, 要么因为他不配置跳线要么因为设备是无跳线的. 大 驱动在初始化时最有挑战性的问题中的一个是如何决 ...
分类:系统服务   时间:2019-07-06 12:20:35    收藏:0  评论:0  赞:0  阅读:76
linux进程简单睡眠
当一个进程睡眠, 它这样做以期望某些条件在以后会成真. 如我们之前注意到的, 任何睡 眠的进程必须在它再次醒来时检查来确保它在等待的条件真正为真. Linux 内核中睡眠的 最简单方式是一个宏定义, 称为 wait_event(有几个变体); 它结合了处理睡眠的细节和 进程在等待的条件的检查. wa ...
分类:系统服务   时间:2019-07-06 11:46:56    收藏:0  评论:0  赞:0  阅读:110
linux 阻塞 open 作为对 EBUSY 的替代
当设备不可存取, 返回一个错误常常是最合理的方法, 但是有些情况用户可能更愿意等待 设备. 例如, 如果一个数据通讯通道既用于规律地预期地传送报告(使用 crontab), 也用于根据 用户的需要偶尔地使用, 对于被安排的操作最好是稍微延迟, 而不是只是因为通道当前忙 而失败. 当设备不可存取, 返 ...
分类:系统服务   时间:2019-07-06 11:43:24    收藏:0  评论:0  赞:0  阅读:120
linux进程互斥等待
我们已经见到当一个进程调用 wake_up 在等待队列上, 所有的在这个队列上等待的进程 被置为可运行的. 在许多情况下, 这是正确的做法. 但是, 在别的情况下, 可能提前知道 只有一个被唤醒的进程将成功获得需要的资源, 并且其余的将简单地再次睡眠. 每个这样 的进程, 但是, 必须获得处理器, ...
分类:系统服务   时间:2019-07-06 11:42:31    收藏:0  评论:0  赞:0  阅读:180
linux llseek 实现
llseek 方法实现了 lseek 和 llseek 系统调用. 我们已经说了如果 llseek 方法从设备 的操作中缺失, 内核中的缺省的实现进行移位通过修改 filp->f_pos, 这是文件中的当前 读写位置. 请注意对于 lseek 系统调用要正确工作, 读和写方法必须配合, 通过使用和 ...
分类:系统服务   时间:2019-07-06 11:41:28    收藏:0  评论:0  赞:0  阅读:137
linux 使用 ioctl 参数
在看 scull 驱动的 ioctl 代码之前, 我们需要涉及的另一点是如何使用这个额外的参数. 如果它是一个整数, 就容易: 它可以直接使用. 如果它是一个指针, 但是, 必须小心些. 当用一个指针引用用户空间, 我们必须确保用户地址是有效的. 试图存取一个没验证过的 用户提供的指针可能导致不正确 ...
分类:系统服务   时间:2019-07-06 11:38:09    收藏:0  评论:0  赞:0  阅读:162
linux 不用 ioctl 的设备控制
有时控制设备最好是通过写控制序列到设备自身来实现. 例如, 这个技术用在控制台驱动 中, 这里所谓的 escape 序列被用来移动光标, 改变缺省的颜色, 或者进行其他的配置任 务. 这样实现设备控制的好处是用户可仅仅通过写数据控制设备, 不必使用(或者有时候 写)只为配置设备而建立的程序. 当设备 ...
分类:系统服务   时间:2019-07-06 11:34:30    收藏:0  评论:0  赞:0  阅读:109
linux进程 阻塞和非阻塞操作
在我们看全功能的 read 和 write 方法的实现之前, 我们触及的最后一点是决定何时使 进程睡眠. 有时实现正确的 unix 语义要求一个操作不阻塞, 即便它不能完全地进行下去. 有时还有调用进程通知你他不想阻塞, 不管它的 I/O 是否继续. 明确的非阻塞 I/O 由 filp->f_fla ...
分类:系统服务   时间:2019-07-06 11:28:16    收藏:0  评论:0  赞:0  阅读:105
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!