linux开发
文章平均质量分 69
adaptiver
是非审之于己毁誉听之于人得失安之于数所谓男儿要锐气藏于胸和气浮于脸才气见于事义气施于人如此方能成就大事
展开
-
两个编译2.4与2.6内核模块的Makefile 模板(支持交叉编译)
Makefile for linux 2.4 kernel TARGET := modulename INCLUDE := -I/opt/celinux-040503/include CFLAGS := -O2 -Wall -DMODULE -D__KERNEL_转载 2011-09-09 20:25:05 · 727 阅读 · 0 评论 -
在内核中创建文件 filp_open/sys_open
文件系统跑起来之后,在内核中可以像在用户空间一样操作文件. 用户空间 内核open() sys_open(), filp_open()close() sy转载 2011-08-15 17:58:13 · 8507 阅读 · 1 评论 -
linux中mips 32bit页表相关定义
在include/asm-mips/pgtable.h中,定义了pte_none和pte_present等宏#define pte_none(pte) (!(pte_val(pte) & ~_PAGE_GLOBAL))#define pte_present(pte) (原创 2011-08-18 14:27:03 · 2250 阅读 · 0 评论 -
mmap相关_20110818
内存映射void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)内存映射函数mmap负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改,来实现对文件的读取和修转载 2011-08-18 19:36:56 · 1058 阅读 · 0 评论 -
用户空间编写驱动优劣
为什么可能在用户空间编写驱动。用户空间驱动的好处在于:完整的 C 库可以连接. 驱动可以进行许多奇怪的任务, 不用依靠外面的程序(实现使用策略的工具程序, 常常随着驱动自身发布).程序员可以在驱动代码上运行常用的调试器, 而不必走调试一个运行中的内核的弯路.如果一转载 2011-08-17 20:08:45 · 1434 阅读 · 0 评论 -
内核通知链机制的原理及实现
这篇文章是对以下两位博主的文章进行了简单整理转载引用,备忘。非常感谢两位的分享。http://my.chinaunix.net/space.php?uid=25445243&do=blog&id=212959http://yfydz.cublog.cn转载 2011-08-01 19:55:27 · 1061 阅读 · 0 评论 -
使用/sys文件系统访问Linux内核
使用/sys文件系统访问Linux内核内容简介: sysfs 与 /sys sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sy转载 2011-09-26 19:05:09 · 785 阅读 · 0 评论 -
使用/sys文件系统访问Linux内核(简)
sysfs 与 proc 相比有很多优点,最重要的莫过于设计上的清晰。一个 proc 虚拟文件可能有内部格式,如 /proc/scsi/scsi ,它是可读可写的,(其文件权限被错误地标记为了 0444 !,这是内核的一个BUG),并且读写格式不一样,代表不同的操作,应用程序中读转载 2011-09-26 19:05:57 · 1028 阅读 · 0 评论 -
模块打包方式和加载时机
打包:模块无论是编译进内核还是不编译进内核,一般都是打包在firmware文件里。当然可以后面手动通过usbnet等方式把没编译进内核的模块手动放到内核里,但主要是调试这么用,产品里很少这么用。对于编译进内核的模块,是编译进vmlinux.bin里的。对于没有编译进内原创 2011-08-31 13:52:38 · 940 阅读 · 0 评论 -
linux中断嵌套以及中断丢失
在linux内核里,如果驱动在申请注册中断的时候没有特别的指定,do_irq在做中断响应的时候,是开启中断的,如果在驱动的中断处理函数正在执行的过程中,出现同一设备的中断或者不同设备的中断,这时候新的中断会被立即处理,还是被pending,等当前中断处理完成后,再做处理。在2转载 2011-09-29 16:15:22 · 6810 阅读 · 1 评论 -
kmap/kmalloc/ioremap/kmalloc/kzalloc/kcalloc/vmalloc
kmap函数: 把某块高端内存映射到页表,然后返回给用户一个填好vitual字段的page结构 建立永久地址映射,不是简单的返回virtual字段的pageioremap: 驱动程序无法直接访问io物理地址,所以ioremap是为了使将其映射到虚转载 2011-10-14 18:09:43 · 2236 阅读 · 0 评论 -
linux mips架构PHYS_OFFSET、CAC_BASE、HIGHMEM_START、PAGE_OFFSET、virt_to_phys、phys_to_virt、page_to_phys的定义
在include/asm-mips/mach-generic/spaces.h中:#ifndef PHYS_OFFSET#define PHYS_OFFSET _AC(0, UL)#endif#ifdef CONFIG_32BIT#define CAC_BA原创 2011-10-08 14:18:21 · 4074 阅读 · 0 评论 -
VMALLOC_START/VMALLOC_END的值(mips架构)
在arch/mips/include/asm/pgtable-32.h中:#define VMALLOC_START MAP_BASE#define PKMAP_BASE (0xfe000000UL)#ifdef CONFIG_HIGHMEM# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)#else# define VMA原创 2011-10-20 15:28:59 · 2712 阅读 · 0 评论 -
proc下文件(buddyinfo/vmallocinfo...)
将linux-2.6.35/Documentation/filesystems/proc.txt内容copy至此,以备查。------------------------------------------------------------------------------ T H E /proc F I L E S Y S T E M转载 2011-10-20 19:08:16 · 8790 阅读 · 0 评论 -
关于宏PageReserved
宏PageReserved用来检测是否是该页是否为内核代码所用或者该页根本就没有使用。定义在include/linux/page-flags.h中#define TESTPAGEFLAG(uname, lname) \static inline int Page##uname(struct page *page)原创 2011-10-20 09:48:32 · 5451 阅读 · 0 评论 -
copy_to_user的实现以及get_user_pages/kmap_atomic/kmalloc
转自 http://blog.csdn.net/eroswang/article/details/4130991copy_to_user的实现:copy_to_user__copy_to_user__copy_to_user_inatomic __put_user_size __put_user_asm/__copy_to_user_ll__copy_t转载 2011-10-20 16:36:06 · 3050 阅读 · 0 评论 -
mmap/do_mmap/do_mmap_pgoff
mmap系统调用 返回新线性区中第一个单元位置的线性地址。注意:linux中有mmap(由老的C库使用)和mmap2(由新的C库使用)两个系统调用,他们仅在第6个参数有区别。(所在公司的平台上经测试用的都是mmap而非mmap2)在linux-2.6.27.28中,系统调用mmap和mmap2都调用do_mmap2函数,do_mmap2函数再调用do_mmap_pgoff。在linux-2原创 2011-10-20 13:53:52 · 6618 阅读 · 0 评论 -
Linux内核高端内存管理
转自:http://blog.csdn.net/littlehedgehog/article/details/2796669原先一直都对Linux高端内存的管理认识模模糊糊的,可能主要是初次接触Linux kernel 是0.11版吧,当初的内存设计是16M,Linus对拥有32M的内存都是觊觎万分,1G内存恐怕是天方夜谭了。16M内存哪里还顾得上高端内存,脑子就一直没有这种概念。先我们还转载 2011-10-28 19:38:28 · 777 阅读 · 0 评论 -
Linux内核里的DebugFS
转自:http://www.cnblogs.com/wwang/archive/2011/01/17/1937609.htmlDebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。通常情况下,最常用的内转载 2011-11-21 13:42:37 · 785 阅读 · 0 评论 -
try_module_get和module_put
转自:http://apps.hi.baidu.com/share/detail/44235513模块在被使用时,是不允许被卸载的。 2.4内核中,模块自身通过 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT宏来管理自己被使用的计数。 2.6内核提供了更健壮、灵活的模块计数管理接口 try_module_get(&module), module_put转载 2011-11-22 15:22:16 · 3599 阅读 · 0 评论 -
宏ARCH_SLAB_MINALIGN的值,使用DMA时的CACHE一致性
ARCH_SLAB_MINALIGN同事说 发现一个内存可优化的小点:“Slob实现kmalloc时,会申请(size+align)的空间,其中align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN)用来对齐对ARCH_SLAB_MINALIGN,在slob中定义,为4对ARCH_KMALLOC_MINALIGN,看601b/原创 2011-10-08 11:25:57 · 2111 阅读 · 0 评论 -
bonnie++、dbench、iozone工具
转:记测试工具iozone,iometer,bonnie++http://blog.csdn.net/zhangxinrun/article/details/5648174记就自己接触到的测试工具,主要有以下几种:iozone,iometer,bonnie++iozone主页地址:http://www.iozone.org 通过如下操作测试文件IO性能:read, writ转载 2011-11-25 19:51:08 · 8759 阅读 · 0 评论 -
Linux Filesystem in Userspace(FUSE)
转贴两篇关于fuse的文章,后面再研究 Linux Filesystem in Userspace(FUSE) http://www.360doc.com/content/09/1008/23/175938_6995356.shtml1. FUSE(Filesystem in Userspace)简介1.1. 概述FUSE(用户空间文件系统)作为类UNIX系统平台上可加载的内核转载 2011-11-26 16:00:28 · 6117 阅读 · 0 评论 -
linux内核的文件预读
转自http://www.360doc.com/content/09/1023/16/313373_7725308.shtmlLinux文件预读算法磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现代计算机系统的一个主要瓶颈。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。本文作者是中国科学技术大学自动化系的博士生,他在1998年开转载 2011-11-26 16:01:46 · 769 阅读 · 0 评论 -
编译内核时为某个文件夹/文件设定编译选项/DEBUG
编译内核时为某个文件夹设定编译选项:所有的 EXTRA_ 变量(EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS)只在所定义的Kbuild Makefile中起作用。EXTRA_ 变量可以在Kbuild Makefile中所有命令中使用。$(EXTRA_CFLAGS) 是用 $(CC) 编译C源文件时的选项。例子:原创 2011-11-28 17:21:03 · 1995 阅读 · 0 评论 -
linux 清理缓存
http://www.cnblogs.com/stable/archive/2011/02/15/1955477.html 通过修改proc系统的drop_caches清理free的cache$echo 3 > /proc/sys/vm/drop_cachesdrop_caches的详细文档如下:Writing to this will cause the kernel to转载 2011-11-26 15:09:00 · 1571 阅读 · 0 评论 -
slab/slob/slub的区别
原文链接:http://www.linuxdiyf.com/bbs/viewthread.php?tid=92084 很久很久以前:一个叫做Mark Hemment的哥儿们写了Slab。在接下来的一些年里,其他人对Slab进行了完善。一年半以前,SLOB问世了。SLOB的目标是针对嵌入式系统的,主要是适用于那些内存非常有限的系统,比如32MB以下的内存,它不太注重large smp系统,虽然最转载 2011-12-05 15:28:28 · 13356 阅读 · 0 评论 -
kmalloc/vmalloc获取memory的对齐方式
kmalloc对齐方式:所用kernel使用slob:# CONFIG_SLAB is not set# CONFIG_SLUB is not setCONFIG_SLOB=y在linux2.6.35/inclue/linux/slob_def.h中:/** * kmalloc - allocate memory * @size: how many bytes of原创 2011-12-05 13:22:19 · 3824 阅读 · 0 评论 -
系统工作期间调整/home分区
/home 分区是最常移动的分区之一。某些时候,/home 中的全部空间都用完了,而且需要增加一个硬盘驱动器。另一些时候,/home 被设置为根分区的一部分,为了提高性能或便于备份,可能需要将它移动到别的地方。我会针对每种情况说明如何安全有效地移动 /home。警告 下面的技术说明如何移动一个或多个分区。尽管这项技术的设计使您能够“撤销”失败的分区移动,但它并不防止用户的错误。换言之,只要转载 2011-12-05 15:30:14 · 942 阅读 · 0 评论 -
kmemleak
kmemleak:the memory leak detector,目前只有X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE等架构上可使能。config DEBUG_KMEMLEAK bool "Kernel memory leak detector" depends on DEBU原创 2011-12-05 15:11:23 · 2774 阅读 · 0 评论 -
/proc/pid进程相关说明
http://hi.baidu.com/arthurde/blog/item/90b184f42ded7072ddc4749b.html一、/proc/pid/statmpid/statm包含了在此进程中所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。 /proc/1 # cat statm550 70 62 451 0 97 0 输出解释C转载 2011-12-19 15:35:10 · 1533 阅读 · 0 评论 -
read 系统调用剖析
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-read/简介: 大部分程序员可能会有这样的疑问:当在程序中调用库函数 read 时,这个请求是经过哪些处理最终到达磁盘的呢,数据又是怎么被拷贝到用户缓存区的呢?本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、核心空间的处理。用户空间处理部分是系统调转载 2011-12-20 09:08:01 · 714 阅读 · 0 评论 -
内存耗用:VSS/RSS/PSS/USS
http://hi.baidu.com/donghaozheng/blog/item/235da701ab70f60a1c95832e.html TermsVSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS- Proportional Set Siz转载 2011-12-19 15:25:33 · 113980 阅读 · 2 评论 -
Linux cgroup机制分析之框架分析
http://blog.chinaunix.net/space.php?uid=20543183&do=blog&id=1930840一: 前言前段时间,一直在写操作系统和研究Solaris kernel.从而对linux kernel关心甚少.不久前偶然收到富士通的面试,由于诸多原因推辞掉了这次机会.不过招聘要求给我留下了较深的印像.其中涉及到了cgroup机制.cgroup对我来说转载 2011-12-22 19:55:57 · 1542 阅读 · 1 评论 -
对于struct file_operations中ioctl消失的学习笔记
转自:http://qgqceo.chinaunix.com/space.php?uid=20543672&do=blog&id=3015637 很久都没有写驱动代码了,对于一些驱动相关的内核变化也没有怎么关心。这次重游《LDD3》获益良多,其值对于struct file_operations中ioctl的消失也让我长了不少见识。当年看《LDD3》的时候已经注意到了书中对ioctl转载 2011-12-15 13:21:46 · 6415 阅读 · 2 评论 -
Android对Linux内核的改动你知道多少
转自:http://hb.qq.com/a/20110728/000034.htm我们知道Android是一个开源系统,但是并不彻底,而且Android从多个方面对Linux内核进行了改动与增强,尽管一度和Linux基金会在内核方面闹得不愉快,但是最终也达成了和解。下面将对此进行详细介绍和分析。 1 、Goldfish Android模拟器通过运行一个Goldfish的虚拟CPU.转载 2011-12-16 13:14:40 · 1479 阅读 · 0 评论 -
SLAB与SLUB 内存管理器
http://hi.baidu.com/crazyegg/blog/item/100320dbda499d6ed1164ee1.htmlSLUB内存分配器译者按:不知道读者朋友们有没有误入过 /sys/slab 目录,进过这个吓人的目录之后,你可能就很想知道它到底是怎么回事,这和 slab 内存分配器有关,当然,更和 SLUB 内存分配器相关了,/sys/slab 和 slub 一同在 2转载 2012-01-09 20:24:08 · 3567 阅读 · 0 评论 -
Ext4,Ext3的特点和区别
转自:http://apps.hi.baidu.com/share/detail/16436126 Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:1.转载 2012-01-09 20:24:44 · 1345 阅读 · 0 评论 -
linux引导分析
转自http://www.cnitblog.com/zouzheng/archive/2008/08/04/47577.html------------------------------------------ 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------转载 2012-01-09 20:19:42 · 1038 阅读 · 0 评论 -
linux系统mem_map的定义和赋值(mips架构)
mem_map 的定义:在mm/memory.c中:#ifndef CONFIG_NEED_MULTIPLE_NODES/* use the per-pgdat data instead for discontigmem - mbligh */unsigned long max_mapnr;struct page *mem_map;EXPORT_SYMBOL(max_map转载 2011-10-13 19:32:03 · 11286 阅读 · 0 评论