上一页 1 ··· 105 106 107 108 109 110 111 112 113 ··· 124 下一页
摘要: 今天被打印信息的去除困扰了,想了想,如果靠一个一个的改动未免太繁琐。因此就仔细的看了下这部分的打印原理。当然下面只是简单的进行了知识罗列不过有需要的朋友可以随便看看。说不准会有些收获呢。Include/linux/printk.h中有如下定义:#defineKERN_EMERG""/* system... 阅读全文
posted @ 2015-04-11 17:58 瘋耔 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 先开个头,准备这与一篇struct hw_module_t HAL_MODULE_INFO_SYM 相关的文章。Hal层的库文件是怎么被上层调用的?上层调用时的入口(相当于main)又是什么呢?它就是HAL_MODULE_INFO_SYM。下gps.default.so库为例子:①上层gpstest... 阅读全文
posted @ 2015-04-11 17:14 瘋耔 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 第一部分 libutils概述 libutils是Android的底层库,这个库以C++实现,它提供的API也是C++的。Android的层次的C语言程序和库,大都基于libutils开发。 libutils中的头文件如下所示: frameworks/base/include/utils ... 阅读全文
posted @ 2015-04-11 16:58 瘋耔 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属性文件/sys/cl 阅读全文
posted @ 2015-04-11 14:14 瘋耔 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一方面实... 阅读全文
posted @ 2015-04-11 14:12 瘋耔 阅读(1036) 评论(0) 推荐(0) 编辑
摘要: kmalloc/kfree用于划分和回收内核空间低区内存的方法。改组方法没有直接通过伙伴系统进行内存的划分,通过slab算法进行分配的。同时也为每个CPU提供一个阵列缓存,用于提高分配效率。下面对改组函数进行源码级的分析。内存分配static inline void *kmalloc(size_t ... 阅读全文
posted @ 2015-04-10 15:46 瘋耔 阅读(1524) 评论(0) 推荐(0) 编辑
摘要: 最近在使用filp_open打开文件时遇到到一个问题,当打开一个并不存在的文件时,filp_open返回值值为0xfffffffe,而并不是0(NULL),这是因为内核对返回指针的函数做了特殊处理。内核中的函数常常返回指针,通常如果调用出错,会返回NULL空指针,但linux做了更精妙的处理,能够通... 阅读全文
posted @ 2015-04-10 14:33 瘋耔 阅读(2852) 评论(0) 推荐(1) 编辑
摘要: #defineclass_create(owner,name)\({\ staticstructlock_class_key__key;\ __class_create(owner,name,&__key);\})扩展阅读class_create为该设备创建一个class,再为每个设备调用class... 阅读全文
posted @ 2015-04-09 21:07 瘋耔 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 2.6.25及以后的linux内核版本废除了init_MUTEX函数新版本使用sema_init函数平台:X86 32位内核:2.6.24定义:引用staticinlinevoidinit_MUTEX(structsemaphore*sem){sema_init(sem,1);}说明:Init_MU... 阅读全文
posted @ 2015-04-09 20:50 瘋耔 阅读(301) 评论(0) 推荐(1) 编辑
摘要: linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const struct file_op... 阅读全文
posted @ 2015-04-09 20:36 瘋耔 阅读(1387) 评论(0) 推荐(0) 编辑
摘要: 版本:linux-2.6.24.4宏: MKDEV(MAJOR, MINOR); 说明: 获取设备在设备表中的位置。 MAJOR 主设备号 MINOR 次设备号内核使用的版本号说明文件: 在内核 /Documentation 目录下的 devices.txt 有说明。 一般本地保留的 MAJOR 2 阅读全文
posted @ 2015-04-09 20:29 瘋耔 阅读(854) 评论(0) 推荐(0) 编辑
摘要: device number(dev_t)linux driver2009-08-21 10:08:03 阅读26 评论0 字号:大中小dev_tdescription: the dev_t type in is used to hold device numbers—both the major a... 阅读全文
posted @ 2015-04-09 20:27 瘋耔 阅读(528) 评论(0) 推荐(1) 编辑
摘要: struct proc_dir_entry {unsigned int low_ino;unsigned short namelen;const char *name;mode_t mode;nlink_t nlink;uid_t uid;gid_t gid;loff_t size;const st... 阅读全文
posted @ 2015-04-09 20:15 瘋耔 阅读(731) 评论(0) 推荐(1) 编辑
摘要: kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大内存只有在要被DMA访问的时候才需要物理上连续( 阅读全文
posted @ 2015-04-09 20:03 瘋耔 阅读(2316) 评论(0) 推荐(0) 编辑
摘要: 开关稳压器 阅读全文
posted @ 2015-04-09 11:15 瘋耔 阅读(165) 评论(0) 推荐(0) 编辑
上一页 1 ··· 105 106 107 108 109 110 111 112 113 ··· 124 下一页
跳至侧栏