对于Linux内核tty设备的一点理解】的更多相关文章

虽然一直做嵌入式Linux,宿主机和开发板通信天天都在用tty设备通信,但是其实自己对TTY设备及终端的概念认识几乎是0.对于Linux内核的终端.tty.控制台等概念的认识很模糊.由于在学习的时候碰到了重定向console的问题,所以借机学习下tty的知识.以下是我对tty的认识总结,信息来源于网络和内核文档.参考资料见文章末尾. tty一词源于Teletypes,或Teletypewriters,它是最早出现的一种终端设备,类似电传打字机,由Teletype公司生产.最初tty是指连接到Un…
http://blog.chinaunix.net/uid-7828352-id-3233064.html…
对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属. 顾名而思义就知道设备模型是关于设备的模型,既不是任小强们的房模,也不是张导的炮模.对咱们写驱动的和不写驱动的人来说,设备的概念就是总线和与其相连的各种设备了.电脑城的IT工作者都会知道设备是通过总线连到计算机上的,而且还需要对应的驱动才能用,可是总线是如何发现设备的,设备又是如何和驱动对应起来的,…
1. 实验目的 选择一个系统调用(13号系统调用time除外),系统调用列表,使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 分析汇编代码调用系统调用的工作过程,特别是参数的传递的方式等. 阐明自己对“系统调用的工作机制”的理解. 实验过程 2.1 fork函数 本次实验选择fork系统调用,其系统调用号为: 2 i386 fork sys_fork stub32_fork 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的…
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc vers…
转自:https://www.cnblogs.com/pengdonglin137/p/5248114.html#_lab2_3_1 阅读目录(Content) 作者信息 平台简介 摘要 正文 一.根据设备树创建device node链表 二.遍历device node链表,创建并注册platform_device 三.注册其他设备 其他 一./proc/device-tree 二./sys/firmware 三.测试 回到顶部(go to top) 作者信息 作者: 彭东林 邮箱:pengdo…
术语"热插拔"最普遍使用的意义产生于当讨论这样的事实时, 几乎所有的计算机系统现在 能够处理当系统有电时设备的出现或消失. 这非常不同于只是几年前的计算机系统, 那时 程序员知道他们只需要在启动时扫描所有的设备, 并且他们从不必担心他们的设备消失直 到整个机器被关电. 现在, 随着 USB 的出现, CardBus, PCMCIA, IEEE1394, 和 PCI 热 插拔控制器, Linux 内核需要能够可靠地运行不管什么硬件从系统中增加或去除. 这产生 了一个额外的负担给设备驱动作…
学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下.学习设备驱动编程也有一段时间了,也写过了几个驱动程序.因此有对设备驱动程序有了一些新的理解和认识,总结一下. ★什么是驱动程序 刚開始学习设备驱动程序的时候,产生了很多的问题.什么是驱动程序?驱动程序是干嘛的?它是怎样工作的?它又是怎样跟操作系统联系起来的?一系列的问题,如今有些地方还是不一定清楚,可是相比起刚開始的那个阶段,感觉自己还是清楚了非常多. 设备驱动程序说白了(实质)就是为应用…
1.Kobject Kobject是设备驱动模型的核心结构,它使所有设备在底层都有统一的接口.在内核注册的kobject对象都会对应sysfs文件系统中的一个目录(目录名称有Kobject结构中k_name指定) struct kobject {     const char        * k_name; // 指向设备名称的指针     char            name[KOBJ_NAME_LEN]; // 设备名称     struct kref        kref; //引…
设备模型拍得再玄幻,它也只是个模型,必须得落实在具体的子系统,否则就只能抱着个最佳技术奖空遗恨.既然前面已经以USB子系统的实现分析示例了分析内核源码应该如何入手,那么这里就仍然以USB子系统为例,看看设备模型是如何软着陆的. 内核中USB子系统的结构 我们已经知道了USB子系统的代码都位于drivers/usb目录下面,也认识了一个很重要的目录——core子目录.现在,我们再来看一个很重要的模块——usbcore.你可以使用“lsmod”命令看一下,在显示的结果里能够找到有一个模块叫做usbc…
实验原理: 一.调度时机 不同类型的进程有不同的调度需求 第一种分类:        I/O-bound             频繁的进行I/O            通常会花费很多时间等待I/O操作的完成      CPU-bound             计算密集型            需要大量的CPU时间进行运算 第二种分类      批处理进程(batch process)             不必与用户交互,通常在后台运行            不必很快响应        …
1. 仓库地址 git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git https://kernel.googlesource.com/pub/scm/linux/kernel/git/robh/linux.git https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git 2. 获取源码 git clone git://git.kernel.org/pub/scm…
一个类的真正目的是作为一个是该类成员的设备的容器. 一个成员由 struct class_device 来表示: struct class_device { struct kobject kobj; struct class *class; struct device *dev; void *class_data; char class_id[BUS_ID_SIZE]; }; class_id 成员持有设备名子, 如同它在 sysfs 中的一样. class 指针应当指向持有这个 设备的类, 并…
如果你在编写总线级别的代码, 你可能不得不对所有已经注册到你的总线的设备或驱动进 行一些操作. 它可能会诱惑人直接进入 bus_type 结构中的各种结构, 但是最好使用已经 提供的帮助函数. 为操作每个对总线已知的设备, 使用: int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *, void *)); 这个函数列举总线上的每个设备, 传递关联…
1,ioctl preface--starting point ,format,mount volume,in addition to the above file system -- allows users to store and retrive data; organized in a hierarchical directory tree,behaviorial semantics as spelled ou; ASM   shared disk cluster file system…
作业列表      (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码   linux内核分析作业3:跟踪分析Linux内核的启动过程 linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用   linux内核分析作业5:分析system_call中断处理过程   linux内核分析作业6:分析Linux内核创建一个新进程的过程…
linux内核--自旋锁的理解 自旋锁:如果内核配置为SMP系统,自旋锁就按SMP系统上的要求来实现真正的自旋等待,但是对于UP系统,自旋锁仅做抢占和中断操作,没有实现真正的“自旋”.如果配置了CONFIG_DEBUG_SPINLOCK,那么自旋锁按照SMP系统来编译.     但是为什么在UP系统中不需要真正的“带有自旋的”自旋锁呢?其实在理解了自旋锁的概念和由来,这个问题就迎刃而解了.所以我重新查找了关于自旋锁的资料,认真研究了自旋锁的实现和相关内容. 一.自旋锁spinlock的由来  …
Linux内核分析 链接汇总 Linux内核分析第一周学习总结--计算机是如何工作的 Linux内核分析第二周学习总结--操作系统是如何工作的 Linux内核分析第三周学习总结--构造一个简单的Linux系统MenuOS Linux内核分析第四周学习总结--扒开应用系统的三层皮(上) Linux内核分析第五周学习总结--扒开应用系统的三层皮(下) Linux内核分析第六周学习总结--进程的描述和进程的创建 Linux内核分析第七周学习总结--可执行程序的装载 Linux内核分析第八周学习总结--…
有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问题,虽然Win10发布了,,但我还是好喜欢XP呀,好想回家用用家里的XP来玩玩这块板子,不知不觉也第五天了,感觉代码都有些模糊,连自己都不是很清楚了,担心现在分享起来比较困惑,各路大神多加批评呀,觉得渣渣的尽量指正出来,拉出来批评,今天还是来总结一下有关Linux文件系统的问题吧~ Linux的使用和用户空间程序的编程和文件系统有着密切的关系,文件系统的概念大家应该都有些…
原文:十天学Linux内核之第五天---有关Linux文件系统实现的问题 有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问题,虽然Win10发布了,,但我还是好喜欢XP呀,好想回家用用家里的XP来玩玩这块板子,不知不觉也第五天了,感觉代码都有些模糊,连自己都不是很清楚了,担心现在分享起来比较困惑,各路大神多加批评呀,觉得渣渣的尽量指正出来,拉出来批评,今天还是来总结一下有关Linux文件系统的问题吧~ Linux的使用…
我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,他目前任职中兴通讯操作系统团队,他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作. 我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,目前任职中兴通讯操作系统团队.他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作.近一个月之前,谢宝友( @kernel-hacker)发布的一条关于Linux 2.6.12内核源代码注释文件的微博…
Perface 前面已经写过一篇<嵌入式linux内核的五个子系统>,概括性比较强,也比较简略,现在对其进行补充说明. 仅留此笔记,待日后查看及补充! Linux内核的子系统 内核是操作系统的核心.Linux内核提供很多基本功能,如虚拟内存.多任务.共享库.需求加载.共享写时拷贝(Copy-On-Write)以及网络功能等.增加各种不同功能导致内核代码不断增加. Linux内核把不同功能分成不同的子系统的方法,通过一种整体的结构把各种功能集合在一起,提高了工作效率.同时还提供动态加载模块的方式…
1.前言 在Linux内核的源码中,除了简洁的list链表外,内核还有klist链表,它是list链表的线程安全版本,在结构体中提供了整个链表的自旋锁,对链表节点查找.插入和删除等操作,都需要先获得这个自旋锁,klist的链表节点数据结构klist_node引入了引用计数器,只有当节点的的引用计数为0时,才允许该节点从klist链表中移除. 2.klist链表相关结构 内核源码中,klist相关的头文件是include/linux/klist.h,实现的文件是lib/klist.c中,接下来分析…
一直想写写Linux内核的文章,特别是进程这方面的,说实话,不好写,也不太敢写:)直到遇到了一本好书.<Linux内核设计与实现>,原书<Linux Kernel Development>Third Edition,作者Robert Love. 在之前买了几本厚书,比如<深入理解Linux内核>.<深入理解计算机系统>,对于我而言还是太厚了.前者主要看了文件系统的一些知识,后者主要看内存管理的一些知识. 但是,我最爱的还是<Linux内核设计与实现&g…
本文将简要地介绍Linux总线设备驱动模型及其实现方式,并不会过多地涉及其在内核中的具体实现,最后,本文将会以平台总线为例介绍设备和驱动程序的实现过程. 目录: 一.总线设备驱动模型总体介绍及其实现方式 1.总线设备驱动模型总体介绍 2.总线实现方式 (1):描述 (2):注册和卸载 3.设备实现方式 4.驱动实现方式 二.平台总线设备驱动 1.平台设备的实现方式 2.平台驱动的实现方式 3.平台总线驱动与设备匹配机制 三.按键实例 1.按键设备 2.按键驱动 一.总线设备驱动模型总体介绍及其实…
转自Linux中国 译者按:本文作者戴文.科利尔.约翰逊(Devyn Collier Johnson)今年才19岁,但是他在Linux内核.人工智能.编程语言方面拥有丰富的经验,本文是其在linux.org上连载的一系列关于内核的文章.文章写的深入浅出,本站不揣浅陋,由LCTT成员geekpi进行了系列翻译,以分享给广大Linux爱好者. 在1991年,一个叫林纳斯·本纳第克特·托瓦兹的芬兰学生制作了一个现在非常流行的操作系统的内核.他于1991年9月发布了Linux 0.01,并且于1992年…
    Linux内核地址映射模型x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图.   Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间.注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的.   Linux内核高端内存的由来 当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0…
Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间.注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的. Linux内核高端内存的由来 当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0xc00000…
Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 申请设备号 注册设备 register_device 如何构建 模块编译 内核编译 Makefile Kconfig 总结 参考 前言 驱动总共分为字符型设备驱动,块设备驱动,网络设备驱动.对于字符型设备驱动的资料,网上比较多,<Linux Kernel Driver>这本书可以了解一下,对于学…