全部博文(1493)
发布时间:2012-12-14 09:17:20
1.查找 a.grep:能使用基本的正则表达式 b.egrep:能使用扩展的正则表达式 = grep -E c.fgrep:匹配固定的字符串而非正则表达式 2.meta字符 .*代表“匹配任一字符的任意长度”,*若置于正则表达式的第一字符,不具有任何特殊意义 ^符号置于[]中的第一个字符表示反向的意思 \{n,m\}:匹配他前面单个字符的重复出现的次数的区间 \{3\}表示至少三次 \( \):讲\(与\)间的模式存储在特殊的保留空间 3.后向引用 首先,将子表达式包含在\( \)中。最多包含9个子表达式然后,使用\digit digit可以......【阅读全文】
发布时间:2012-12-14 09:17:13
(该图转自他人,源作者不详) 该图很清晰的说明了Camera启动时从上到下的调用过程。 ICameraClient/ICameraSerice/ICamera是接口类,其功能真正实现是在继承了BnCamera*的Camera*中,而BpCamera*对象是在远程端用Binder来和Camera*对象通信的。 第四步比较复杂,解释如下: init.rc脚本会加载mediaserver,mediaserver中会创建CameraService。 getCameraService时会创建sp<ICameraService>类型,其实就是在CameraClient端创建Cam......【阅读全文】
发布时间:2012-12-12 08:57:02
我们知道CPU所访问的都是虚拟内存地址。那么平时我们自己在编写的内核模块时,linux到底分配的是什么样的内存空间呢?要解答这个问题,首先就要看看内核非连续内存。在linux的内存管理中,用户使用0~3GB的地址空间,而内核只是用了3GB~4GB区间的地址空间,共1GB;非连续空间的物理映射就位于3GB~4GB之间,如下图示0GB &......【阅读全文】
发布时间:2012-12-11 17:28:07
编写多线程编程面临的一个最具挑战性的问题就是如何让一个线程和另一个线程协同工作,避免出现竞争条件(race condition)和数据破坏(data corruption)。为了使应用程序中的多个线程协同工作,线程需要根据应用需求在某些特定情况下进行必要的互斥和同步。 下面的代码是读写操作的最小化模型,简单的阐述如下: 利用设计的系统是ARM使用一个线程从FPGA中读取数据,在另一个线程从FPGA中将数据转发给其他模块,就可以利用两个信号量完成两个线程之间的同步. 需要注意的是: 在实际的操作中有时需要对接收数据进行一系列的处理和拼接,注意不满足条件时信号量的释放,否则程序就会 ......【阅读全文】
发布时间:2012-12-11 17:27:59
从终端输入数据较多时,我们多会选择从文件读入。有时测试为了省事,会偷懒先不写文件读写的代码,通过shell的重定向模拟。比如,int i;while (scanf ("%d", &i) != EOF) printf ("%d\n", i);如果输入的文件在data.in中,可以用下面命令从“文件”读入输入数据,$ cat data.in | ./test或$ ./test <data.in 用gdb调试时也可以这么干,用下面命令即可。$ gdb ./test运行,$ run <data.in开始单步,$ star......【阅读全文】