- 博客(477)
- 资源 (1)
- 收藏
- 关注
转载 fb.h注释
struct fb_info { int node; int flags; struct mutex lock; /* Lock for open/release/ioctl funcs 用于open/release/ioctl函数的锁 */ struct mutex mm_lock; /* Lock for fb_mmap and smem_
2017-06-12 11:07:23 1785
转载 fbmem.c分析
int fb_get_color_depth(struct fb_var_screeninfo *var,struct fb_fix_screeninfo *fix){ int depth = 0; if (fix->visual == FB_VISUAL_MONO01 || fix->visual == FB_VISUAL_MONO10)
2017-06-12 10:23:41 1813
原创 linux_logo结构体
结构linux_logo 描述了一个linux logo的全部信息 struct linux_logo { int type; /* one of LINUX_LOGO_*, logo的类型 */ unsigned int width; /* logo的宽度*/ unsigned int height;
2017-06-12 10:09:08 518
原创 FB_VISUAL_XXXXX-------色彩模式宏
在linux系统中,支持以下几种色彩模式 #define FB_VISUAL_MONO01 0 /* Monochr. 0=White 1=Black */ #define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */ #define FB_VISUAL_TRUECOLOR
2017-06-12 10:05:40 923
原创 fb_var_screeninfo 和fb_fix_screeninfo
struct fb_var_screeninfo { //struct fb_info的成员(可变参数),其记录用户可修改的显示控制器的参数,包括分 //辨率和每个像素点的比特数,其成员需要在驱动程序中初始化和设置 /********可见解析度(实际屏幕)********/ __u32 xres;/* visible re
2017-06-09 10:35:09 10316 4
原创 struct fb_bitfield
struct fb_bitfield { /*fb缓存的RGB位域,该结构描述每一个像素显示缓冲区的组织方式,假如为RGB565模式,R占5位=bit[11:15] G占6位=bit[10:5] B占5位=bit[4:0] */ __u32 offset; /* beginning of bitf
2017-06-09 10:24:00 2448
转载 VISUALS USED BY THE FRAME BUFFER DEVICE API
Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10)-------------------------------------------------Each pixel is either black or white.FB_VISUAL_MONO01 /* Monochr. 1=Black 0=White */FB_VISUAL_MON
2017-06-09 10:04:27 250
转载 Video Mode Timings
A monitor draws an image on the screen by using an electron beam (3 electronbeams for color models, 1 electron beam for monochrome monitors). The front ofthe screen is covered by a pattern of colore
2017-06-09 09:46:52 413
转载 module_init宏
我们在学习Linux驱动开发时,首先需要了解Linux的模块化机制(module),但是module并不仅仅用于支撑驱动的加载和卸载。一个最简单的模块例子如下:// filename: HelloWorld.c#include #include static int hello_init(void){ printk(KERN_ALERT "Hello World\n");
2017-06-08 10:27:31 563
转载 MTK 平台LCD 驱动框架
代码的路是在/mediatek/source/kernel/driver/vedio/mtkfb.cmodule_init(mtkfb_init);模块初始化函数int__init mtkfb_init(void){ int r = 0; MSG_FUNC_ENTER(); /* Register the driver with LDM */ if(platform_driv
2017-06-08 09:38:11 1532 1
转载 uevent
uevent是sysfs向用户空间发出的消息。比如,device_add函数中,会调用kobject_uevent(&dev->kobj, KOBJ_ADD); 这里kobj是发消息的kobj,KOBJ_ADD是发出的事件。uevent的事件在kobject_action中定义:enum kobject_action { KOBJ_ADD, KOBJ_REMOV
2017-06-07 17:36:11 545
转载 Android创建设备文件
1引言 1.1编写目的 这是一篇介绍Android启动时关于设备文件的加载生成过程。主要介绍android如何实现驱动设备文件如何实现自动生成。 这是篇面向关注底层工程师的文档。 1.2介绍 本文介绍android在启动时如何自动生成驱动设备文件。 1.3定义 NA. 1.4引用 NA. 2目前常用的几种加载方式 目前常用的方式有:1.UDEV 2
2017-06-07 17:16:31 1719
转载 kobject.c 添加注释
/** * populate_dir - populate directory with attributes. * @kobj: object we're working on. * * Most subsystems have a set of default attributes that * are associated with an objec
2017-06-07 15:41:55 335
转载 map.c 添加注释
/* * linux/drivers/base/map.c * * (C) Copyright Al Viro 2002,2003 * Released under GPL v2. * * NOTE: data structure needs to be changed. It works, but for large dev_t * it will be too slow
2017-06-07 15:23:09 402
转载 char_dev.c 添加中文注释
/* * linux/fs/char_dev.c * * Copyright (C) 1991, 1992 Linus Torvalds */#include #include #include #include #include #include #include #include #include #include #include #include
2017-06-07 15:21:54 981
转载 class.c 添加中文注释(3)
int class_device_register(struct class_device *class_dev){ /* [cgw]: 初始化一个struct class_device */ class_device_initialize(class_dev); /* [cgw]: 添加一个struct class_device */ return class_
2017-06-07 15:20:55 244
转载 class.c 添加中文注释(2)
/* Class Device Stuff */int class_device_create_file(struct class_device * class_dev, const struct class_device_attribute * attr){ int error = -EINVAL; /* [cgw]: class
2017-06-07 15:19:58 284
转载 class.c 添加中文注释(1)
/* * class.c - basic device class management * * Copyright (c) 2002-3 Patrick Mochel * Copyright (c) 2002-3 Open Source Development Labs * Copyright (c) 2003-2004 Greg Kroah-Hartman * Copyright
2017-06-07 15:18:59 438
转载 sysfs文件系统之读写文件
------------------------------------------------ #纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang------------------------------------------------- 上面的文章分析了sysfs中文件的创建过程, 既然文件已经建立起
2017-06-07 15:16:10 1834
转载 sysfs文件系统之建立文件
------------------------------------------------ #纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang-------------------------------------------------在linux内核fs/sysfs目录下面dir.c是建立目录的文件,
2017-06-07 15:14:54 534
转载 sysfs文件系统之初始化
------------------------------------------------ #纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang------------------------------------------------- sysfs文件系统和procfs类似,也是一种内存文件系统
2017-06-07 15:13:41 519
转载 Linux文件系统之proc文件系统
----------------------------------------------- #纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang-------------------------------------------------一: 概述 Proc文件系统是一个虚拟文件系统, 它是一
2017-06-07 15:12:29 534
转载 Linux VFS文件系统之读写(read/write)文件
------------------------------------------------ #纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang-------------------------------------------------一: 概述 在上文中讨论了VFS层是如何打开一个文件的,本文就
2017-06-07 15:11:06 2837
转载 Linux VFS文件系统之打开(Open)文件
------------------------------------------------#纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang-------------------------------------------------一: 概述 文件的打开读写操作是一项复杂的工作, 本文只讨论
2017-06-07 15:09:12 1305
转载 Linux VFS文件系统之创建文件
----------------------------#纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang----------------------------一: 概述 在上文中分析了VFS根目录是如何创建的;既然有了根VFS这棵树就能开枝散叶,在内存中慢慢发展壮大;本文将介绍如何在VFS中建立一个目
2017-06-07 15:07:21 1722
转载 Linux VFS文件系统之rootfs注册与挂载
------------------------------------------------#纯属个人理解,如有问题敬请谅解!#kernel version: 2.6.26#Author: andy wang-------------------------------------------------一: 序言 文件系统在linux这个“阿房宫”
2017-06-07 14:47:42 894
原创 Linux内核查找文件操作函数的过程
先根据路径找到父目录项,然后找到对应的i_node,i_ndoe的成员 file_operations * i_fop是指向文件操作函数集的指针。在创建文件的i_node时会设定 file_operations * i_fop的值。一般默认使用init_special_inode()函数进行设置,其代码如下:void init_special_inode(struct inode
2017-06-07 11:32:48 894
转载 linux文件系统的系统分析--(九)sysfs下属性文件的读写
sysfs的属性文件的读写,我们先看下open,open系统调用最终会调用sysfs_open_file struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata; //获取sysfs_dirent结构struct kobject *kobj = attr_sd->s_parent->s_dir.
2017-06-06 16:23:14 764
转载 linux文件系统的系统分析--(八)sysfs中sysfs_dirent与inode dentry的关系
对于具体的文件系统,因为在vfs层下,所以必须有inode和dentry才能用,但从前两篇中我们只看到了sysfs中的sysfs_dirent搭建起来的目录树,通过sysfs_dirent与kobject的紧密关系,也可看到kobject的层次关系。 但前面的创建目录和创建文件,都没有inode和dentry,下面我们就看看sysfs中sysfs_dirent与inode d
2017-06-06 16:21:35 495
转载 linux文件系统的系统分析--(七)sysfs下属性文件的创建
属性文件的建立和目录的建立相差不大,因为不管目录还是普通文件,都由一个sysfs_dirent代表sysfs_create_file-->sysfs_add_file-->sysfs_add_file_mode[cpp] view plain copyintsysfs_add_file_mode(struct sysfs_diren
2017-06-06 16:19:31 423
转载 linux文件系统的系统分析--(六)sysfs下目录的创建
对sysfs和设备模型有了解的都会知道sysfs实际是为了将设备模型导出到用户空间的一个内存文件系统。 设备模型的关键结构体kobject会组成设备模型的树形结构,而sysfs的关键结构体sysfs_dirent也是类似的树形的结构,vfs中的dentry同样是类似的树形结构。 sysfs目录文件的创建都是由设备模型的上层构件(bus device dr
2017-06-06 16:17:16 460
转载 linux文件系统的系统分析--(五)路径名的查找
do_path_lookup是文件系统中最基本的函数,也是非常重要的,里面各种情况,各种goto,总之各种坑爹。。 没能把所有的goto都理清,只看了标准情况下的路径查找,但主要的关键点都是一样的,弄清了关键点,心中对文件系统的路径名查找就有了概念。不管绝对路径名,相对路径名,还是带符号链接的,又有什么质的区别呢? do_path_lookup分为
2017-06-06 16:14:28 484
转载 linux文件系统的系统分析--(四)sysfs的安装和挂载
在上一次分析rootfs的安装时,其实是不准确的,应该称为安装根文件系统。 安装根文件系统分为两个阶段: 1、内核安装特殊rootfs文件系统,该文件系统仅提供一个作为初始安装点的空目录。 2、内核在空目录上安装实际根文件系统。比如pc上的ext4,比如嵌入式中用到的各种flash的根文件系统。 这一次分析sysfs,
2017-06-06 16:12:22 691
转载 linux文件系统的系统分析--(三)rootfs的安装
在《linux文件系统的系统分析--(一)文件系统类型的注册》我们以rootfs为例分析了文件系统是如何注册的,接着我们就分析rootfs的安装。 在mnt_init-->init_mount_tree:[cpp] view plain copystatic void __init init_mount_tree(
2017-06-06 16:06:29 554
转载 linux文件系统的系统分析--(二)文件系统类型的注册
因为Linux支持模块机制,所以我们可以将文件系统编译为模块,所以文件系统系统类型的注册的注册有多种方式:要么已经包含在内核映像中,要么作为一个模块被动态加载。我们关注的重点是rootfs和sysfs,他们其实在系统初始化的时候就注册并安装好了,没有rootfs,linux就没法玩了。以rootfs的注册为例,来分析一下文件系统类型的注册: 在start_kernel-
2017-06-06 16:02:55 344
转载 linux文件系统的系统分析--(一)vfs和数据结构
Linux的虚拟文件系统层的特点在于把很多不同种类文件系统的共同信息放入内核;可以通过vfs的转换来利用linux所支持挂载的实际文件系统。实际上,因为有了vfs,也可以较为方便的按照vfs的一些接口将文件系统移植过来,比如win下的ntfs和fat32就是如此。在open read等系统调用之后就是到vfs_read 等式样的函数,在vfs层做些处理后,再根据当前操作的路径所挂载在
2017-06-06 15:56:24 423
原创 SYSCALL_DEFINE
在include/linux/syscall.h里有下面一组宏:点击(此处)折叠或打开#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARG
2017-06-06 14:30:44 956
转载 从文件 I/O 看 Linux 的虚拟文件系统
Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。本文在简要介绍 VFS 的相关数据结构后,以文件 I/O 为切入点深入 Linux 内核源代
2017-06-06 11:00:47 439
转载 Linux VFS分析(二)
4.对文件系统的管理inode的管理:Inode-cache hash表inode_hashtable索引节点缓存dentry的管理:我们知道,若干dentry描绘了一个树型的目录结构,这就是用户所看到的目录结构,每个dentry指向一个索引节点(inode)结构然而,这些dentry结构并不是常驻内存的,因为整个目录结构可能会非常大,以致于内存根本装不下。Linux的
2017-06-06 10:12:42 545
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人