Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185108
  • 博文数量: 20
  • 博客积分: 543
  • 博客等级: 下士
  • 技术积分: 411
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 20:38
文章存档

2012年(12)

2009年(8)

分类: LINUX

2012-12-19 22:55:01

新浪微博:旺旺-LINUX   记录学习LINUX/ARM过程中的点点滴滴
------------------------------------------------------------------------------------------------------------------------------
一个很有用的工具,以前竟然不知道。 print the offsets of a structure fields:
Syntax: pahole [-C ] 详见链接: 
-------------------------------------------------------------------------------
Finding memory leaks in kernel with kmemleak 
来自
--------------------------------------------------------------------------------------------------------------------------------------------------------------
原来 ARM 模拟器 QEMU早就支持 device tree了。使用-dtb选项可以指定传递给kernel的dtb文件。[哈哈]
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux uses DT(Device Tree) data for three major purposes: platform identification, runtime configuration, and device population.  
--------------------------------------------------------------------------------------------------------------------------------------------------------------
bic 是 bit clear 指令。 bic sp,sp,#7 能让sp八字节对齐。
来自
--------------------------------------------------------------------------------------------------------------------------------------------------------------
原来ARM一个WFI指令就能让一个CPU核进入休眠状态??
--------------------------------------------------------------------------------------------------------------------------------------------------------------
完全可以重叠。 内核由chrdevs[255]和cdev_map.probes[255]哈希表管理字符设备, 由major_names[255]和bdev_map.probes[255]哈希表管理块设备, 两者互不相干。 而且mknod系统调用中,对字符/块设备的inode赋予了不同的i_fop,(见init_special_inode())文件读写时先由inode找到找到i_fop,从而走不同分枝
想到一个STUPID问题: 块设备的主设备号 可以跟 字符设备的主设备号 重复吗? WHY?
|  | 
来自
--------------------------------------------------------------------------------------------------------------------------------------------------------------
获得内核函数地址的方法,比如要得到 do_fork 的地址: 
1. System.map: grep do_fork System.map
2. vmlinux: nm vmlinx | grep do_fork
3. cat /proc/kallsyms | grep do_fork
4. kallsyms_lookup_name("do_fork") 该函数位于kernel/kallsyms.c 需要CONFIG_KALLSYMS
--------------------------------------------------------------------------------------------------------------------------------------------------------------
嘿嘿!我在京东商城购买了“深入理解Android(卷1)”,刚刚写了评价:写的真不错,在基本Android底层开发的书里面感觉是最好的... 求围观>> 
--------------------------------------------------------------------------------------------------------------------------------------------------------------
内核jiffies变量在系统启动后并不是从零开始的,而是被初始化为 -300*HZ,在五分钟后才变为零,见INITIAL-JIFFIES宏。在使用time-before()等时要注意这个小细节。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
回复: mmap 也可以,但似乎mmap的大小不能超过文件大小,这样要创建新文件或者给文件追加内容就不太方便。 //:mmap呢?
用C语言实现文件拷贝?先read再write要数据从内核空间拷贝到用户空间,再从用户空间拷贝到内核空间,必然低效的。sendfile系统调用可以直接在内核空间拷贝,避免从用户空间中转。sendfile常用作从文件到socket拷贝,但从2.6.33内核开始也支持从文件到文件拷贝。
来自
用C语言实现文件拷贝?先read再write要数据从内核空间拷贝到用户空间,再从用户空间拷贝到内核空间,必然低效的。sendfile系统调用可以直接在内核空间拷贝,避免从用户空间中转。sendfile常用作从文件到socket拷贝,但从2.6.33内核开始也支持从文件到文件拷贝。

--------------------------------------------------------------------------------------------------------------------------------------------------------------
kennel居然是狗窝的意思,怎么跟kernel长这么像呢?
--------------------------------------------------------------------------------------------------------------------------------------------------------------

还有这个功能?第一次见到,值得研究一下。
malloc是Glibc的一个库函数,想动态申请释放不费时吗?mallopt可配置malloc对kernel的sbrk/mmap调用行为,以及释放的门限。先malloc很大的memory并写它,mlockall ,接着free。之后所有的malloc/free就不会产生新的system call了.因此不会产生新的page fault。读读这篇短文吧:
--------------------------------------------------------------------------------------------------------------------------------------------------------------

ALSA的驱动程序框架真复杂,特别是里面的DMA处理和中断处理,需要花时间研究一下才能搞明白。
--------------------------------------------------------------------------------------------------------------------------------------------------------------

内核定时器函数能不能睡眠?内核定时器是用软中断SOFTIRQ实现的,定时器超时调用的函数运行在软中断上下文中,不能休眠。软中断可以被中断抢占,但不能发起进程调度。
--------------------------------------------------------------------------------------------------------------------------------------------------------------

在内核里怎样实现轮询机制?假如你要监视一个GPIO口的状态, 而由于硬件设计的限制该GPIO状态改变时并没有中断产生,这时就需要每隔一段时间读一下GPIO值。 为这点小事而创建一个内核线程(kthread)显然不是好主意。比较好的办法是使用内核定时器。
内核定时器到期后会调用设定的函数读取GPIO状态,然后再重启定时器。这样就可以周期性地轮询GPIO口的状态。
--------------------------------------------------------------------------------------------------------------------------------------------------------------

一个Linux字符设备驱动。Android系统起来后,能在dev目录下自动创建设备节点,要读写这个设备却提示没有权限。在哪里更改设备节点的权限呢?答案是ueventd.rc文件里。虽然init.rc里也可以,但毕竟不太好。
来自
--------------------------------------------------------------------------------------------------------------------------------------------------------------

阅读(2407) | 评论(0) | 转发(0) |
0

上一篇:[原创] 子进程fork引发的问题

下一篇:没有了

给主人留下些什么吧!~~