摘要:有4个函数用于字节序的转换。分别针对2字节和4字节。单个字节自然没有字节序的问题。htonl(3) - Linux man pageNamehtonl, htons, ntohl, ntohs - convert values between host and network byte orderSynopsis#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntoh
阅读全文
09 2010 档案
摘要:原文链接:http://androidguy.blog.51cto.com/974126/216490大家也许都知道做工艺器或是工厂里做生产某些产品的模具模具。如做一个金属的五角星,只要将钢水罐到五角星的模具模具里就可以很容易地制做五角星。 我们也可以将类比喻成做五角星的模具。而生产出的一个个五角星就是一个个对象。 为了建立不同的对象(有的是金属的、有的塑料的,等等),可通过向模具里灌入不同的液态材料就可以制做。这也相当于向类的构造方法中传入不同的参数(相当于不同的液态材料)。 还有就是接口,如果说类是对象的抽象,那么接口就是类的抽象。我们也可以将接口看成是制做这个五角星模具的规格列表(相当于
阅读全文
摘要:Ruby, Io, PHP, Python, Lua, Java, Perl, Applescript, TCL, ELisp, Javascript, OCaml, Ghostscript, and C Fractal BenchmarkI've always enjoyed fractals, and was curious if scripting languages were up to the task. I wrote a very simple Mandelbrot set generator for my test. Rather than optimizing for
阅读全文
摘要:一、定义:struct device_driver结构体被定义在/include/linux/device.h,原型是: 124struct device_driver { 125 const char * name; 126 struct bus_type * bus; 127 128 struct kobject kobj; 129 struct klist klist_devices; 130 struct klist_node ...
阅读全文
摘要:尽管我们不能转变制度,也不必定能够转变别人,但我们可以转变自己,因为没有人能够禁止我们不断前进,如果失败或者失意,那只能怪我们自己无能,怪我们自己不擅长学习,不能怪别人没有给您机会,更不能怪这个社会...... 善意的建议:楼主没有必要抗议!甚至是强烈抗议。也没有必要将自己大二开端创业的经历“摆”出来,自满对自己的成长不利,因为今后的路还长。我也不会吸收您的寻衅或者与任何人展开没完没了的争辩,“特例是并非能够广而推之的范例”,我仅仅是闲来无事之时“瞎”掺合而以。因为我总不能将自己在很多年前当工人的时候就有钱购置8万元的PC机,而且用汇编在PC机上写“窗口软件的经历来告诉年轻人或者教训大学生吧!
阅读全文
摘要:1. 制作patchdiff -crN Component_org Component > 01_Component_xxx.patch2. 打patchpatch -pl < ./01_Component_xxx.patch3. 使用quilt 管理patch#tar xvjf prj-0.1-patches.tar.bz2 Component/# quilt push -a <== 打series所有补丁# quilt pop -a <== 退出补丁# quilt diff >xxx.patch 合并所有补丁
阅读全文
摘要:Android 加速度传感器的类型是 Sensor.TYPE_ACCELEROMETER 通过 android.hardware.SensorEvent 返回加速度传感器值。 加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是 values[0]: x-axis 方向加速度 values[1]: y-axis 方向加速度 values[2]: z-axis 方向加速度 其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点(如下图) x 方向就是手机的水平方向,右为正 y 方向就是手机的水平垂直方向,前为正 y 方向就是手机的空间垂...
阅读全文
摘要:有的时候,使用sudo apt-get install可能导致意想不到的错误,尤其是中途中断了安装时,错误信息为:Errors were encountered while processing:ttf-dustinkhangmankdeedukdeE: Sub-process /usr/bin/dpkg returned an error code (1)此时可以这样解决:cd /var/lib/dpkgsudo mv info info.baksudo mkdir info重新安装,在此为:sudo apt-get --reinstall install ttf-dustin khangm
阅读全文
摘要:浅析dev目录下设备文件mknod节点gid,uid和mode的如何方便设置init=>handle_device_fd 收到uevent信息=>handle_device_event=>static void handle_device_event(struct uevent *uevent){.../* are we block or char? where should we live? */if(!strncmp(uevent->path, "/block", 6)) {block = 1;base = "/dev/block/&q
阅读全文
摘要:/system/core/init初始化程序1.执行sigaction函数,对SIGCHILD信号进行处理。实际上暂时屏蔽2.设置umask来清空后面创建文件的mask3. 创建文件系统mount point & mount 内存文件系统4. open_devnull_stdio 0 1 2 is the fd. They are all the file descriptor of /dev/__null__5.open /dev/__kmsg__ as log fd.6.parse_config_file首先打开/init.rc然后读出所有的数据到内存,然后调用parse_conf
阅读全文
摘要:电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的。BatteryService是跑在system_process当中,在系统初始化的时候启动,如下 在BatteryService.java中: Log.i(TAG, "Starting Battery Service."); BatteryService battery = new BatteryService(context); ServiceManager.addService("battery", battery);==========================
阅读全文
摘要:从这一章开始,我们将详细的介绍Linux的设备驱动模型。Linux设备驱动模型是一个相当复杂的系统,对于初学者来说真有些无从入手。而且更加困难的是,随着新的Linux Kernel的release,Linux的设备驱动模型总会有或大或小的变化,我们将尽量展现 Linux Kernel 的这种变化。早期的Linux内核(版本2.4之前)并没有实现一个统一的设备模型,设备节点的创建一般是mknod命令手动创建或利用devfs文件系统创建。早期的Linux发行版一般会采用手动创建的方式预先把通常用到的节点都创建出来,而嵌入式系统则会采用devfs的方式。起初Linux 2.6 内核还支持devfs,
阅读全文
摘要:星际译王本地字典库下载地址:http://reciteword.cosoft.org.cn/stardict-iso/stardict-dic/zh_CN/ 安装方法:Install Dictionaries in Linux:To install these tarball dictionaries, do this:tar -xjvf a.tar.bz2mv a /usr/share/stardict/dic在linux上,下载后解压,然后移动到/usr/share/stardict/dic目录下。Install Dictionaries in Mac OS X:tar -xjvf ...
阅读全文
摘要:/*********以下是转载《16道嵌入式C语言面试题中的一题》***********/关键字volatile有什么含意 并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3). 多线程应用中被几个任务共享的变量回答不出这个问题..
阅读全文
摘要:内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。其中,register_chrdev_region()是为提前知道设备的主次设备号的设备分配设备编号。alloc_chrdev_region() 是动态分配主次设备号。register_chrdev()。是老版本的设备号注册方式,他只分配主设备号。从设备号在mknod的时候指定。内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_devic.
阅读全文
摘要:摘录几篇android研发日志1 http://blog.csdn.net/linweig/archive/2010/06/01/5640697.aspxFirmware 加载原理分析----分析的比较透彻,我在wifimodule调试时遇到的问题几乎跟这个一样,不过我采取了另外一个方法,直接用kernel的read和write了,没有使用request_firmware,有空小结下。前言 前段时间移植 wifi 驱动到 android 的内核上,发现 firmware 的加载始终出错,问了几个人,都不是很了解,没办法,只好自己研究一下。 原理分析 从本质上来说, firmware 需要做..
阅读全文
摘要:最近想用LXDE,试了一天居然都不能用。用户体验太遭了。 我安装了Ubuntu Server10.04,然后用apt-get install lxde。登录后中文显示很好。但是当我打开一个程序后,那个程序的窗口就一路向右下方移动。屏幕随之狂闪。 我找了篇文档,安装了最新版本的lxde,其pcmanfm是0.97版本。结果还是如此。 我又安装了Debain系统,在Debian下安装lxde。居然也是同样的效果! 说明一下,我是在KVM虚拟机中运行的。但是这个应该没关系。 我自己的电脑上,我也是装的ubuntu-server,再加上ubuntu-desktop,然后再安装lxd...
阅读全文
摘要:[size=4]Linux用户态与内核态的交互 ——netlink篇[/size] 作者:Kendo 2006-9-3 这是一篇学习笔记,主要是对《Linux系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz 参考文档 《Linux系统内核空间与用户空间通信的实现与分析》 陈鑫 http://www-128.ibm.com/developerworks/cn/linux/l-netlink/?ca=dwcn-n
阅读全文
摘要:○、说明 笔记适用于Linux的2.6.10以后的内核。笔记以Linux Device Driver3提供的scull程序(scull目录中的main.c和scull.h)为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录顺序。比如,module_init( )和module_exit( )为相对应的一对系统调用,一般书籍中都会放在一起讨论,但是本笔记却不会这样,而是在需要调用的时候才会涉及,因此module_init( )会放在笔记开始时,也就是刚加载module时讨论,而module_exit( )则会放在笔记结束前,也就是要卸载module时再加以讨论。该笔记的的目的是为了对
阅读全文
摘要:原型:extern int tolower(int c); 用法:#include <ctype.h> 功能:将字符c转换为小写英文字母 说明:如果c为大写英文字母,则返回对应的小写字母;否则返回原来的值。 举例: // tolower.c #include <syslib.h> #include <ctype.h> main() { char *s="Hello, World!"; int i; clrscr(); // clear screen printf("%s/n",s); for(i=0;i<strl
阅读全文
摘要:原型:extern int isspace(int c); 用法:#include <ctype.h> 功能:判断字符c是否为空白符 说明:当c为空白符时,返回非零值,否则返回零。 空白符指空格、水平制表、垂直制表、换页、回车和换行符。 举例: // isspace.c #include <syslib.h> #include <ctype.h> main() { char s[]="Test Line 1/tend/nTest Line 2/r"; int i; clrscr(); // clear screen for(i=0;i&l
阅读全文
摘要:原型:extern char *strstr(char *haystack, char *needle); 用法:#include <string.h> 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 举例: // strstr.c#include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; char *l="lob
阅读全文
摘要:对linux内核的数据类型做一下总结。下面部分内容参考了:http://book.csdn.net/bookfiles/12/100126.shtml当Linux内核在体系结构差异较大的平台之间移植时,会产生与数据类型相关的问题。在编译内核时使用 -Wall -Wstrict-prototypes选项,可以避免很多错误的发生。内核使用的基本数据类型主要有:ØØ int 标准C语言整数类型;ØØ u32 32位整数类型;ØØ pid_t 特定内核对象pid的类型。在不同的CPU体系结构上,C语言的数据类型所占空间不一样。下面是在x86下
阅读全文
摘要:ubuntu默认使用的是国外的apt-get服务器,因此安装软件很慢。需要修改为国内的apt-get服务器。 ubuntu中文论坛的wiki有人整理了国内的apt-get源。 地址:http://wiki.ubuntu.org.cn/Qref/Source 选择一个,替换文件/etc/apt/sources.list 然后使用apt-get update下载新源中的文件数据。 如果使用GUI的新立得,那么点击reload按钮。 另外: dpkg -l 可以查看所有已经安装的软件。 dpkg -L 包名 显示 该已安装的包的所有文件名。 dpkg -s 包名 显示包的状态。 apt-...
阅读全文
摘要:在OpenOffice中按F5就会弹出一个office的导航栏,和微软的office导航栏类似。但是Openoffice的导航栏很难停放到Ofiice文档中。这就很不方便了。 今天折腾了半天,终于找到停放导航栏到文档左右两侧的方法了。 <!-- @page { margin: 2cm } P { font-family: "DejaVuSans", "MSung Light SC", "SimSun", "FZSongYi", "FZShuSong", "NSimSun"
阅读全文
摘要:JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。在android中提供JNI的方式,让Java程序可以调用C语言程序。android中很多Java类都具有native接口,这些接口由本地实现,然后注册到系统中。 主要的JNI代码放在以下的路径中:frameworks/base/core/jni/,这个路径中的内容被编译成库 libandroid_runtime.so,这是个普通的动态库,被放置在目标系统的/system/lib目录下。此外,android还有其他的 JNI库。JNI中的各个文件,实际上就是普通的..
阅读全文
摘要:三个函数的声明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t nelem, size_t elsize);都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULLmalloc用于申请一段新的地址,参数size为需要内存空间的长度,如:char* p;p=(char*)malloc(20);calloc与malloc相似,参数elsize 为申请地址的单位元素长度,nelem为元素个数,如:char* p;p=(char*
阅读全文