- 博客(375)
- 资源 (55)
- 收藏
- 关注
原创 android /system/vold源码分析(6)
接着分析CommandListener,FrameworkListener是它的直接父类。FrameworkListener类的代码:class FrameworkListener : public SocketListener {public: static const int CMD_ARGS_MAX = 26; /* 1 out of errorRate will be
2016-06-10 23:11:05 1342
原创 android /system/vold源码分析(5)
CommandListener继承关系:SocketListener ---> FrameworkListener ---> CommandListener对比NetlinkHandle的继承关系:SocketListener ---> NetlinkListener ---> NetlinkHandlernm->start()执行流程(1)nm->start() 即 NetlinkManager
2016-06-10 22:43:39 1785
原创 android /system/vold源码分析(4)
继续看后面的代码: /* Process the pending list, since it is owned by the thread, * there is no need to lock it */ while (!pendingList->empty()) { /* Pop the first item from
2016-06-10 22:35:41 1279
原创 android /system/vold源码分析(3)
NetlinkHandlerclass NetlinkHandler: public NetlinkListener {public: NetlinkHandler(int listenerSocket); virtual ~NetlinkHandler(); int start(void); int stop(void);protected: v
2016-06-10 14:29:55 1297
原创 android /system/vold源码分析(2)
NetlinkManager.cpp/hint NetlinkManager::start() { struct sockaddr_nl nladdr; int sz = 64 * 1024; int on = 1; memset(&nladdr, 0, sizeof(nladdr)); nladdr.nl_family = AF_NETLINK;
2016-06-10 11:41:30 1390
原创 android /system/vold源码分析(1)
void是类似linux中udev功能的程序,它管理着可热插拔设备的热插拔工作。main函数完成的VolumeManager, CommandListerer, NetlinkManager的初始化工作,并执行:vm->start()nm->start()cl->startListener()int main() {//下面定义了VOLD中三个重要的类 VolumeManager *vm
2016-06-10 10:51:31 1705
原创 在/sys/中创建设备子设备目录
在drivers/base下的platform.c中:struct device platform_bus = { .init_name = "platform",};注意它是一个struct device结构类型,它是所有设备的根目录。这是在s5p4418中display.c中的一段代码:struct kobject *kobj = NULL;/* create attribute in
2016-05-17 14:03:38 3357 1
原创 SIMPLE_DEV_PM_OPS宏
pm.h有一个宏SIMPLE_DEV_PM_OPS:#define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \const struct dev_pm_ops name = { \ SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \}再看SET_SYSTEM_SLEEP_PM_OPS和dev_
2016-05-06 11:13:05 9900
原创 android policy源码阅读(1)-policy,PolicyManager
接口源代码文件目录位于framework\base\core\java\com\android\internal\policy。 policy的实现代码位于frameworks/base/policy,生成的文件位于./out/target/product/beaglebone/system/framework/android.policy.jar。 PolicyManager主要用于创建W
2016-05-02 16:10:23 2698
原创 android UI(1)-PopupWindow
以弹出音量设置的界面为例,代码如下:public class MainActivity extends Activity implements View.OnClickListener { private LinearLayout volset_layout; private PopupWindow VolsetMenu; @Override protected
2016-05-01 10:42:51 1670
原创 电源管理芯片nxe2100驱动
nxe2100芯片是nxe2000的升级芯片,它提供5个DCDC,10个LDO,2个LDORTC。 High Efficiency Step-down DC/DC Converters* DCDC1 -3 0.6V-3.5V Max 3000mA* DCDC4-5 0.6V-3.5V Max 2000mA* Soft-start circuit●Low Drop Voltage Regula
2016-04-27 18:29:15 3568
原创 drivers/mfd/Mfd-core.c
mfd: multifunction device drivers---多功能设备驱动开发;A product or device that has multiple functions. An example of this might be a printer that also makes copies, faxes, and scans. Another example is a CD o
2016-04-23 19:44:48 2627
原创 try_module_get和module_put
try_module_get使模块的引用计数加1,当rmmod调用时,会检查这个引用计数,当计数为0时才会删除模块。static inline int try_module_get(struct module *module){ int ret = 1; if (module) { preempt_disable(); if (likely(module_is_live(modu
2016-03-29 22:26:15 1185
原创 linux gpio export
linux提供了一系列的函数来操作GPIO,看下面的代码: int io_out, in_in; //定义一个输出IO和一个输入IO io_out = GPIO_TO_PIN(1, 16); io_in = GPIO_TO_PIN(1, 17); gpio_request(io_out, "gpio_out"); //申请IO gpio_request(io_in,
2016-03-29 21:59:23 10495 1
原创 /sys/power/state
kernel/power/main.c中:/** * state - control system power state. * * show() returns what states are supported, which is hard-coded to * 'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and * '
2016-03-21 22:07:56 6653
原创 /sys/power创建
kernel/power/main.c代码:power_attr定义:#define power_attr(_name) \static struct kobj_attribute _name##_attr = { \ .attr = { \ .name = __stringify(_name), \ .mode = 0644, \ }, \ .show = _n
2016-03-21 20:51:43 2686
原创 new Handler().post(new Runnalbe()... 分析
Handler是很灵活的一个类,当运行下面的代码时:new Handler().post(new Runnalbe(){@Overridepublic void run(){ //do something}});它内部干了些啥?!找到它的源代码: /** * Causes the Runnable r to be added to the message queue.
2016-02-24 19:26:57 2465
原创 android:configChanges属性
设置Activity的android:configChanges时,切屏会重新调用各个生命周期本人实际测试发现设置android:configChanges="keyboardHidden|orientation"或不设置横竖屏切换时也会执行onCreate各一次,并且不会执行onConfigurationChanged设置android:configChanges="orientation|sc
2016-02-22 22:41:08 3028 2
原创 本地aar文件引用
有时需要使用第三方的aar库,或是工程源代码越来越大,项目内分工需要或出于模块化考虑,需要引用aar文件。 arr就像C/C++中的静态库。 如何建一个aar,网上的文章很多,这里不再重述。 通过gradle最普遍的方法是把aar上传到mavenCentral或者jcenter。如何引用一个本地aar,要在工程的module配置文件build.gradle中加入:reposito
2016-02-20 22:58:24 3269 1
原创 ubuntu软件更新源问题解决
换了网上几个软件源后均不能用,提示HASH错误,偶尔找到一篇文章讲到可以使用ftp,我改了一下竟然可以用了:# deb cdrom:[Xubuntu 12.04.4 LTS _Precise Pangolin_ - Release amd64 (20140205)]/ dists/precise/main/binary-i386/# deb cdrom:[Xubuntu 12.04.4 LTS _
2016-01-24 11:05:26 3079
原创 Ad-hoc网络
Ad Hoc结构是一种省去了无线中介设备AP而搭建起来的对等网络结构,只要安装了无线网卡,计算机彼此之间即可实现无线互联;其原理是网络中的一台计算机主机建立点到点连接,相当于虚拟AP,而其他计算机就可以直接通过这个点对点连接进行网络互联与共享。 Ad-Hoc(点对点)模式:ad-hoc模式就和以前的直连双绞线概念一样,是P2P的连接,所以也就无法与其它网络沟通了。一般无线终端设备像PMP、P
2015-10-02 16:38:31 8838
原创 内核工作队列workqueue
LDD3: 工作队列是, 表面上看, 类似于 taskets; 它们允许内核代码来请求在将来某个时间调用一个函数. 但是, 有几个显著的不同在这 2 个之间, 包括:(1) tasklet 在软件中断上下文中运行的结果是所有的 tasklet 代码必须是原子的. 相反, 工作队列函数在一个特殊内核进程上下文运行; 结果, 它们有更多的灵活性. 特别地, 工作队列函数能够睡眠.(2) tasklet
2015-09-07 22:12:30 2690 1
原创 android传感器sensor
HAL层的头文件代码位于hardware\libhardware\include\hardware\sensors.h。 HAL层支持13种类型的传感器:/** * Sensor types */#define SENSOR_TYPE_ACCELEROMETER 1#define SENSOR_TYPE_MAGNETIC_FIELD 2#define SENS
2015-08-31 22:21:15 1799
原创 编写android HAL代码
很重要的一点,android代码是运行在linux应用层的,包括HAL层的代码。 HAL的三个结构体:hw_module_t, hw_module_methods_t, hw_device_t。 hardware\libhardware\include\hardware\Hardware.h:struct hw_module_t;struct hw_module_methods_t;
2015-08-31 21:56:39 1513
原创 windows xp下安装AMD sata硬盘驱动(无须重装系统)
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1002&dev_4391]"Service"="ahcix86""ClassGUID"="{4D36E96A-E325-11CE-BFC1-0
2015-08-27 22:29:33 5904 3
原创 安装Rapidsvn 0.21.1
使用rapidsvn 0.21.0这个版本自带的svn1.6,在编译android内核时出错。 rapidsvn使用subversion-1.7.7,推荐使用! 1.安装 apr-1.4.6.tar.gz tar -zxvf apr-1.4.6.tar.gz cd apr-1.4.6./configure --prefix=/usr/local/apr-1.4.6makemake instal
2015-08-19 18:52:49 1745
原创 什么是IOMMU
IOMMU:input/output memory management unit。Device的IOMMU类似于CPU的MMU。对IOMMU的支持主要有两个原因,一个是对老设备的支持,另外一个是对scatter/gather的支持。现有的VMM必须使用模拟设备将来自客户操作系统的驱动程序路由到VMM。这样做是为了管理对共同内存空间的访问,并闲置对内核模式驱动程序的真实设备访问。AMD的IOMMU
2015-07-08 13:49:33 19458 1
原创 iSCSI技术
iSCSI技术 SAN(Storage Area Network的缩写)意为存储区域网络,是真正的专注于企业级的存储。SAN采用一个分离的网络(从传统的局域网中分离)连接所有的存储器和服务器,这个网络可以采用高性能的实现技术,如光纤通道(Fiber Channel),可以容纳SCSI等协议,使数据块的移动更为有效,也便于用户自由增加磁盘阵列、磁带库或服务器等设备。现在的SAN基本都是通过F
2015-07-07 10:48:08 962
转载 xen-tools
最近在寻找快速部署xen虚拟机方法,觉得官方推荐的xen-tools工具集不错,不过发现在介绍时一般用该工具部署Para-Vritralization(半虚拟化)模式的虚拟机,暂且不论部署什么模式的xen虚拟机 ,下面简单介绍一下xen-tools工具。 在debian6上安装xen-tools工具:apt-get install xen-tools 工具包中包含以下工具: /u
2015-07-03 13:26:41 2181
转载 多网卡的7种bond模式原理 linux网卡聚合
现在存储产品CSS使用了多网卡bond6模式,在这里把多网卡的7种bond模式原理和大家分享:Linux 多网卡绑定网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。mode=6
2015-07-02 15:58:32 10751
原创 yum更新源
修改/etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releasever - Basebaseurl=http://mirrors.163.com/centos/6.4/os/$basearch/gpgcheck=1gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-
2015-07-02 15:46:38 3041
转载 Xen中,使用XL还是XM?
用过Xen的几乎都知道xm/xend这一套工具,但是最近社区中都是在讨论xl这个工具,特别是对老用户,可能有些疑惑,我们使用Xen之时,到底是XL还是XM作为工具。我接触Xen也一年多了,每天工作都和Xen打交道,而且经常在Xen开源社区中交流,所以这里我总结一下我的认识,给对xl这个新工具有疑惑的同学答疑一下吧。如果你是老用户,而且使用的Xen版本较低(低于4.1),那么你只能使用xm/xend
2015-07-02 09:59:52 2464
原创 PCI、PCIE
(1)传统的PCI中,CPU通过北桥与PCI总线相连。(2)PCI-X在外形上和64bit的PCI基本上是一样的,但是它们使用的是不同的标准,PCI-X的插槽可以兼容PCI的卡(通过针脚区分),PCI-X也是共享总线的,插多个设备传输速率会下降。PCI-X一般只出现在服务器主板上,不过现在也逐步被PCI-E取代,很多厂商的服务器都已经不提供PCI-X的插槽了。(3)PCI Express是INTE
2015-07-01 11:47:45 1633
转载 KVM虚拟机
Kvm教程目录[隐藏]1 友情连接2 KVM 与 vbox的区别3 关于kvm4 相关连接5 基本知识5.1 安装准备5.2 安装kvm5.3 创建虚拟镜像5.4 安装虚拟机系统5.5 使用虚拟机最简单的命令6 使用6.1 文件共享6.2 快照模式(-snapshot)6.3 高速网络(-net nic,model=virtio -net user)6.4 高速虚拟6.5 使用“母镜像”功能6.6
2015-06-30 14:36:59 2497
转载 KVM虚拟化环境高可用方案探讨
KVM是成熟的开源虚拟化解决方案,将其部署于企业生产环境,其高可用性也是必须要仔细考虑的问题。高可用性(High Availability)是指系统提供不间断服务的能力,也就是尽可能的减少系统停止服务的时间。KVM虚拟化环境也存在HA的问题,KVM主机软硬件或外部环境都有可能出现问题甚至是灾难,这就必须要考虑一些高可用方案。KVM高可用方案无非就是如何能最大限度的让客户机保持正常运行。目前想到的H
2015-06-30 13:50:53 8101
原创 x86中断架构
x86计算机的 CPU 为中断只提供了两条外接引脚:NMI 和 INTR。1. 可编程中断控制器8259A8259A 只适合单 CPU 的情况。每个CPU都有一个本地APIC,所有本地APIC连接到IO APIC。主要是收集来自 I/O 装置的 Interrupt 信号且在当那些装置需要中断时发送信号到本地 APIC,系统中最多可拥有 8 个 I/O APIC。一个本地定时设备以及为本地中断保留的
2015-06-29 15:55:26 1815
原创 ubuntu 内核编译
1 先获取内核源码包,这个不能直接从kernel.org上下,因为ubuntu的内核ubuntu公司对其打过补丁,即定制过,所以可用如下方法下载:sudo apt-cache search linux-source2 之后,安装源码:sudo apt-get install linux-source安装成功后,会在/usr/src目录下:ll /usr/src3 编
2015-06-11 19:10:56 901
原创 低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析
代码实例:Board/pca100001/06 s110/experimental/ble_app_uart。 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据。 int main(void){ // Initialize leds_init(); timers_init(); butto
2015-04-09 16:22:09 10937 4
原创 低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符
特性中的属性有两种:属性值或描述符。 支持通知或指示的特性中默认有一个描述符:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD)。它的UUID是0x2902。 添加描述符的函数是:uint32_t sd_ble_gatts_descriptor_add ( uint16_t char_handl
2015-04-07 14:18:40 7337
转载 BLE 4.0 与 4.1的区别
蓝牙技术让我们在连接各种设备的时候不再被繁多的数据线所束缚,比如音响、电脑,甚至是汽车。目前最新的蓝牙版本是4.0,相比3.0它进一步降低了功耗,并且也提高了传输效率。近日,蓝牙技术联盟(Bluetooth SIG)宣布蓝牙4.1即将到来,它在4.0的基础上又有了三个重要的改进之处。第一个改进的地方被蓝牙技术联盟称为“共存性”,即蓝牙4.1与LTE无线电信号之间如果同时传输数据那么蓝牙4.1可以自
2015-04-03 17:38:59 13209
VC调用matlab7.10的接口程序实例
2013-05-06
Triple-Speed Ethernet(tse)FPGA软核MAC官方实例
2013-04-22
VirtualSMV, VirtualPT IEC61850测试工具(2012-4-17版本)
2012-04-17
ubuntu下安装微信完美方案
2023-04-06
windows/linux分区误删恢复工具
2022-07-25
VirtualMonitor数字签名程序
2022-06-01
kylin ft2000 arm aarch64 boot uImage initrd dtb
2020-04-18
rtl8188EUS_linux_v5.2.2.4.zip
2020-04-05
rtl8188eu.tar.bz2
2020-04-05
rtlwifi.tar.bz2
2020-02-17
Xorg_2007-EDID-JMiseli.pdf
2019-06-24
DRM KMS学习资料
2018-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人