file_operation [cpp] view plaincopystruct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t (*llseek) (struct
常见的单链表题目 一些常见的单链表题目,总结思路和实现代码。1.单链表的反序2.给单链表建环3.检测单链表是否有环4.给单链表解环5.检测两条链表是否相交6.不输入头节点,删除单链表的指定节点(只给定待删除节点指针) 1.单链表的反序[cpp] view plaincopy//逆转链表,并返回逆转
堆和栈 堆(heap)和栈(stack)是非常重要的概念,当我们进行程序开发时理解它们非常重要,尤其是对于嵌入式系统开发。比如在嵌入式系统中,任务的栈通常都很小,可能也就几K字节。在这种情况下,我们就应当尽可能不要将占用内存大的变量分配在栈上,而是应当分配在堆上;此外,也尽量不要采用递归的方式来设计程序,否则很容易造成栈溢出。从本质上说,堆和栈都是内存,那么我们只能从概念上对其进行区分了。为了方便
C语言指针5分钟教程 指针、引用和取值什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。本文会对上述所有指针类型进行探讨。根据出现的位置不同,操作符 * 既可以用来声
大端模式 小端模式 大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
局部变量、全局变量、堆、堆栈、静态和全局 预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static)—,全局变量和静态
strcpy,strcat和strcmp的实现源代码 char* strcpy(char * dst, const char * src){char * cp = dst;while( *cp++ = *src++ ); /* Copy src over dst */return( dst );}Char* strcat ( char * dst , const char * src )
触摸屏驱动分析(s3c-ts.c)(Linux)(分析) /* linux/drivers/input/touchscreen/s3c-ts.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as publish
C语言 笔\面试 do{ }while (0); 通过do-while(0)宏定义将代码打包起来,成为一个独立的语法单元,从而不会引起上下文混淆,同时因为绝大多数的编译器都能够识别do{…}while(0)这种无用的循环并进行优化,所以使用这种方法也不会导致程序的性能降低。下面是两个例子。Imagine a macro of several lines of code like:#define
Android从驱动层到应用程序层的通信 研究一下Android从驱动层到应用层的通信机制是很有必要的,如新增加一个硬件并在应用层去控制硬件都需要用到,目的是知道需要增加哪些东西删改哪些东西而让系统依然工作正常。总共需要增改的有四个东西,驱动、服务(jni、java)、应用apk采用的方式是在驱动层写个字符型设备驱动其中内含一个定时器,每隔2秒发送一个uevent事件并改变sys下相关文件的内容,然后建立一个服务去读取文件并通过i
linux设备驱动之USB主机控制器驱动分析 ----------------------------------------- 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模
Usb Hub代码分析 如需引用请注明出处:http://blog.csdn.net/zkami 作者:ZhengKui在host controller初始化的时候一定会调用hub_probe进行初始化,至少对root hub初始化hub_probe(struct usb_interface *intf, const struct usb_device_id *id) (hub.c)此时struct us
Linux USB驱动程序基础 Linux USB Driver BasicsIntroductionDrivers are software components that operating systems use to provide hardware specific services to applications. This webpage attempts to document the basic
uevent分析 1.kobject, ktype, ksetkobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。另外
年终工作总结:给新手程序员的几个建议 马上到年末了,自己也对今年做了一下总结,自己有哪些优点,有哪些还需要加强。每当我想到今年比较满意的地方,对比之前,就会有这样一个思考:如果以前的我要是知道这些该多。在这里给大家分享一下经验,让新人少走一些弯路。做事要积极主动,态度决定一切说这些,可能有人会觉得,这些都明白,都是大道理,只是怎么样执行的问题,下面我举一个真实的例子。我曾经带过的两位新人,A君上班,交代给他负责
个人对kobject的一点研究 kobject,kset,子系统层次结构内核通常用kobject 结构将各个对象连接起来组成一个分层的结构体系。 parent 是指向另外一个kobject 结构(分层结构中上一层的节点)的指针,主要用途是在 sysfs 层次中定位对象. 一个 kset 是嵌入到相同类型结构的 kobject 的集合。但 struct kobj_type 关注的是对象的类型,而stru
sysfs文件系统学习 为了更好地了解kobject的层次关系,有必要了解一下这种层次关系的表现机制:sysfs。本文简单地学习了一下sysfs,大部分内容来自内核文档sysfs.txt。好了,开始我们的学习之旅,呵呵。 何为sysfs sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象、属性和链接。sysfs与kobject层次紧密相连,它将kobject
linux设备模型--代码分析 上面分析了kobject.kset,ktype.这三个结构联合起来一起构成了整个设备模型的基石.而bus.device.device_driver.则是基于kobject.kset.ktype之上的架构.在这里,总线,设备,驱动被有序的组和在一起.Bus.device.device_driver三者之间的关系如下图所示: 如上图所示.struct bus_type
如何下载ANDROID源代码 看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载、编译和安装Android源代码。 一. 环境准备。 1. 磁盘空间预留20G左右,
USB系统设备模型建立流程 USB设备模型建立流程概览S3c2440处理器中集成有USB控制器,该主控制器作为平台设备s3c_device_usb添加到内核,该设备与驱动ohci_hcd_s3c2410_driver匹配后调用函数usb_hcd_s3c2410_probe。在函数usb_hcd_s3c2410_probe中获取硬件资源,为USB主控制器结构体usb_hcd分配内存,调用函数usb_add_hc