易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux手机打电话代码分析


Android源代码分析之电话功能 RIL
根据:《Android 源码分析-打电话和发短信》一文(时间:2008-12-24 00:28来源:Android 开发者 作者:wsshy 点击: 2275次)
得知,智能手机的打电话功能是由RIL部分来实现的,见下图:
开始分析Android源代码中的RIL部分。
又上图,以及其他相关资料,我得知在Android中有一个叫rild的守护进程。我猜测此进程与电话的拨打接听有莫大关系。
而且在Android系统中存在这么一个rild的可执行文件,源代码中的"hardware/ril/rild"目录下有rild.c的文件 ,且在rild.c中,我们找到了main函数,即我们已经找到了rild守护进程的程序入口啦~
自赞一个先~
开始分析rild守护进程的代码。
在代码开始部分,有一些关于参数解析的片段,暂时先撇开一边,先讲一下rild守护进程的关于RIL的一些重要流程:
main()
{//省略n行
RIL_startEventLoop();
//省略n行
}
          从名字上看就应该觉得这应该是一个起点——"startEventLoop"——一个开始进入时间循环的一点,让我们跟踪进去看看^_^
在"rild.c"中有这么一行:extern void RIL_startEventLoop();
说明RIL_startEventLoop函数的代码还在别处,经查找,发现是在这里:
"hardware\ril\libril"目录下的Ril.cpp文件中。
Get it~
在Ril.cpp中的RIL_startEventLoop中有这么一行:
ret = pthread_create(&s_tid_dispatch, &attr, eventLoop, NULL);
看来Android是在这里开辟一个线程来执行eventLoop循环,
这个eventLoop函数也在这个文件里(Ril.cpp)。
eventLoop中,主要执行了:
    ril_event_init();
    ril_event_set (&s_wakeupfd_event, s_fdWakeupRead, true,
                processWakeupCallback, NULL);
    ril_event_add (&s_wakeupfd_event);
    ril_event_loop();
由函数名可猜测:
ril_event_set使用了新建一个ril事件的,
而ril_event_add 将该新事件添加进某执行队列中。
最后,在循环ril_event_loop中进行一个轮询,捕获事件,进而完成事件处理。
经过对ril_event_set和ril_event_add的代码阅读,证实了之前的两点猜测,
(ril_event_set和ril_event_add以及ril_event_loop函数代码在"ha


相关文档:

Linux Kernel Linked List Explained

参见:http://isis.poly.edu/kulesh/stuff/src/klist/
Introduction:
Linux kernel is mostly written in the C language. Unlike many other languages C does not have
a good collection of data structures built into it or supported by a collection of standard libraries.
Therefore, you're probably excited ......

[转]Linux 修改IP、DNS和路由配置

在Linux操作系统下修改IP、DNS和路由配置
ifconfig eth0 新ip
然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
一、修改IP地址
  [aeolus@db1 network-scripts]$ vi ifcfg-eth0
  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=static
  IPADDR=219.136.241.211
  NETMASK=255.255.255.128
   ......

Linux内核中的双循环链表

Linux内核中的双循环链表
2006-11-27 19:14
双循环链表传统实现
在传统的双循环链表实现中,如果创建某种数据结构的双循环链表,通常采用的办法是在这个数据结构的类型定义中加入两个(指向该类型对象的)指针next和prev。例如:
typedef struct foo {
    …
    struct foo *p ......

linux svn常用命令

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit - ......

1. Linux 基础命令

Unix基础
登录和退出
登陆:可以用Neterm、SecureCRT等终端登陆工具〔192.168.25.12 常用软件下有〕或者
telnet、ftp命令。
1.   telnet 远程终端访问
命令格式:telnet [hostname|IP address]
退出:ctrl+d  or  logout  or  exit
 
2.   ftp 远程文件传输
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号