<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[selfmockery的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/selfmockery</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; selfmockery]]></copyright><item><title><![CDATA[android -llog编译错误]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/64121623</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/64121623</guid><author>selfmockery</author><pubDate>Mon, 20 Mar 2017 09:30:13 +0800</pubDate><description><![CDATA[Android.mk添加
LOCAL_SHARED_LIBRARIES := liblog]]></description><category></category></item><item><title><![CDATA[tar包成多个文件]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/54980881</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/54980881</guid><author>selfmockery</author><pubDate>Sat, 11 Feb 2017 10:02:31 +0800</pubDate><description><![CDATA[打包:
tar cjf - directory/ | split -b 1000m - ~/file.tar.bz2


解压：
cat file.tar.bz2.a* | tar xj]]></description><category></category></item><item><title><![CDATA[获取misc device/cdev 设备private data]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/54836137</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/54836137</guid><author>selfmockery</author><pubDate>Thu, 02 Feb 2017 15:45:37 +0800</pubDate><description><![CDATA[在driver module开发过程中，probe时定义一个device/driver相关的数据结构，其它函数中需要用到这个结构，比如write/read、mmap等操作。
MISCDEVICE：
在misc device open时，将miscdevice设备赋值给file->private_data，file作为write/read、mmap等的参数，可以得到miscdevice的指针。]]></description><category></category></item><item><title><![CDATA[LINUX时间系统]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/52639781</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/52639781</guid><author>selfmockery</author><pubDate>Fri, 23 Sep 2016 16:35:13 +0800</pubDate><description><![CDATA[内核函数:
#include 
struct timeval {
__kernel_time_t tv_sec;
__kernel_susecond_t tv_usec;
}


void do_gettimeofday(struct timeval *tv)



example:
struct timeval start, end;
do_gettimeofday(]]></description><category></category></item><item><title><![CDATA[高通I2C control及gpio模拟添加I2C设备]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/52228887</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/52228887</guid><author>selfmockery</author><pubDate>Wed, 17 Aug 2016 11:13:37 +0800</pubDate><description><![CDATA[高通810，要用camera专用的CCI I2C(GPIO19,GPIO20)接口连外设，查看CCI I2C的调用，非常复杂，涉及到camera的子设备什么，不想去研究用法。
GOIO模拟I2c:
内核已经自带i2c-gpio.c支持模拟GPIO，所要做的就是配置。
打开内核的i2c-gpio功能，在defconfig文件中打开CONFIG_I2C_GPIO=y;
配置I2C GPIO及外]]></description><category></category></item><item><title><![CDATA[Android 设备上shell脚本执行]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51955382</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51955382</guid><author>selfmockery</author><pubDate>Tue, 19 Jul 2016 14:19:25 +0800</pubDate><description><![CDATA[写了个shell脚本，push到android设备上执行，不停报错，最后发现椒由于notepad++在结尾符号问题，默认在windows下结尾符号为CRLF，而unix下为LF
因此需要转换到unix模式，在编辑-文档格式转换中选择需要的转换目标
#！/system/bin/bash
i=1;
while [ $(($i)) -le 50 ]; 
do i=$(($i + 1)); 
]]></description><category></category></item><item><title><![CDATA[VIM 自动补全YouCompleteME]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51523181</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51523181</guid><author>selfmockery</author><pubDate>Sat, 28 May 2016 07:06:52 +0800</pubDate><description><![CDATA[步骤：
1、安装vundle插件(需要vim 支持python 2.6以上，可以通过打开vim，输入-version查看，如果python前有+表示支持，-表示不支持)
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle


2、打开vim .vimrc，添加

保存并退出.vimrc
打开vim，]]></description><category></category></item><item><title><![CDATA[内核通知链]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51468735</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51468735</guid><author>selfmockery</author><pubDate>Sat, 21 May 2016 08:04:59 +0800</pubDate><description><![CDATA[大部分内核模块都是独立的，但有时某个模块对其他模块的事件感兴趣或者需要通知其他模块时，就需要用到内核通知链。
内核通知链只能用在内核各模块之间，无法用在内核与用户通信。
从原理来说，内核通知链就是个函数链表，链表上的每个节点都注册一个对应函数，当事件发生时，对应链表上的每个节点函数将被调用。从结构来说，链表有个通知方和接收方，通知时执行函数由被通知方注册执行。


内核通知链主要有4种：]]></description><category></category></item><item><title><![CDATA[makefile中参数定义]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51336675</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51336675</guid><author>selfmockery</author><pubDate>Sat, 07 May 2016 10:41:57 +0800</pubDate><description><![CDATA[$@ 当前目标文件
$
$^   当前所有的依赖文件
$?   当前依赖文件中比目标文件新的
$*   当前依赖文件（不带后缀名）]]></description><category></category></item><item><title><![CDATA[makefile经典教程]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51297081</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51297081</guid><author>selfmockery</author><pubDate>Mon, 02 May 2016 16:50:33 +0800</pubDate><description><![CDATA[﻿﻿
    makefile很重要

      什么是makefile？或许很多Winodws的程序员都不知道这个东西，因为那些Windows的IDE都为你做了这个工作，但我觉得要作一个好的和professional的程序员，makefile还是要懂。这就好像现在有这么多的HTML的编辑器，但如果你想成为一个专业人士，你还是要了解HTML的标识的含义。特别在Unix下的软件编译，你就不能]]></description><category></category></item><item><title><![CDATA[makefile中的赋值]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51295515</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51295515</guid><author>selfmockery</author><pubDate>Mon, 02 May 2016 15:41:10 +0800</pubDate><description><![CDATA[=        最基本的赋值，其值在整个makefile展开后决定
:=       覆盖之前的值，由其值由位置决定
?=      如果没有赋过值，赋与值
+=      增加值


x = "a"
y = $(x) b
x = c
all:
        @echo $(y)
        @echo $(x)
输出值是
c b
c


x := "a"]]></description><category></category></item><item><title><![CDATA[apt-get install 无法确认具体包名]]></title><link>https://blog.youkuaiyun.com/selfmockery/article/details/51295243</link><guid>https://blog.youkuaiyun.com/selfmockery/article/details/51295243</guid><author>selfmockery</author><pubDate>Mon, 02 May 2016 09:48:33 +0800</pubDate><description><![CDATA[Ubuntu下采用sudo apt-get install 包名，当无法确认具体名称时，可以采用：
sudo apt-cache search 关键字
关键字可以是包名中确认的几个字母，这样能列出包含关键字的所有包名。
@ubuntu:~$ sudo apt-cache search openjdk
default-jdk - Standard Java or Java compatibl]]></description><category></category></item></channel></rss>