- RK3399平台开发系列讲解(以太网篇)2.50、控制eth网卡名字顺序
内核笔记
#子类__高速设备驱动篇RK3399
平台内核版本安卓版本RK3399Linux4.4Android7.1返回专栏总目录文章目录一、网卡名字设置1.1、get_zeroed_page1.2、Bitmap查找操作1.3、set_bit一、网卡名字设置分析一下__dev_alloc_name0、获取一块物理页1、先扫描eth网卡
- licheepi nano BS8112A触摸按键之长按短按
涛水
linux驱动
上一节中介绍了BS8112A芯片在荔枝派nano上的驱动实现过程。但是现在需要用到触摸按键的长按短按功能,需要稍加修改。在BS8112A_probe函数中,设置了__clear_bit(EV_REP,input->evbit);即取消了上报按键重发的功能,所以我们将其开启。改为__set_bit(EV_REP,input->evbit);其余什么也不用改,这样,按键长按时驱动就会上报新的事件。in
- kthread/waitqueue/tasklet/set_bit
weixin_41041321
•Softirq是中断下半部的处理方式(可以在不同cpu上同时运行)•tasklet是基于softirq实现的,使用比softirq简单.不能在不同cpu上同时运行,但是不同cpu可以运行不同的tasklet.•vk_tasklet_init(&pstDecObj->stDecTasklet,pstDecObj->pfnHandleDecodeDone,(unsignedlong)(pstDecO
- bitops中的__set_bit及其应用
吃瓜少年
input
在kernel/include/asm-generic/bitops/non-atomic.h头文件下有如下/***__set_bit-Setabitinmemory*@nr:thebittoset*@addr:theaddresstostartcountingfrom**Unlikeset_bit(),thisfunctionisnon-atomicandmaybereordered.*Ifit
- Linux驱动(并发):04---原子操作(atomic_t、atomic_set、set_bit)
江南、董少
Linux驱动(并发)
一、原子操作介绍原子操作可以保证对一个整型数据的修改是排他性的Linux内核提供了一系列函数来实现内核中的原子操作,这些函数又分为两类,分别针对位和整型变量进行原子操作位和整型变量的原子操作都依赖于底层CPU的原子操作,因此所有这些函数都与CPU架构密切相关对于ARM处理器而言,底层使用LDREX和STREX指令,比如atomic_inc()底层的实现会调用到atomic_add(),其代码如下:
- test_bit、set_bit和clear_bit
Sunnie_ge
linux
//将addr的第nr(nr为0-31)位置值置为1;//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为1的位数extern__inline__intset_bit(intnr,int*addr){intmask,retval;addr+=nr>>5;//nr大于31时,把高27的值做为当前地址的偏移,mask=1>5;mask=1>5;mask=1<<(nr&0x1f);re
- MSM8974 TP 多点触控 B协议
mengluoxixiang
msm8974安卓驱动TP
记录一些关于多点触控的信息:一、配置在TP模块的probe函数里有如下设置:1)配置该设备支持的事件或是按键类型set_bit(EV_SYN,rmi4_data->input_dev->evbit);set_bit(EV_KEY,rmi4_data->input_dev->evbit);set_bit(EV_ABS,rmi4_data->input_dev->evbit);set_bit(BTN_
- linux kernel set_bit() 函数解析
AndyCheng_hgcc
Linuxdriver解析
将一个指针指向的数据的第nr位置一。example:__set_bit(EV_KEY,input_dev->evbit);__set_bit(EV_ABS,input_dev->evbit);__set_bit(BTN_TOUCH,input_dev->keybit);__set_bit(INPUT_PROP_DIRECT,input_dev->propbit);函数位于:kernel\inclu
- 内核input子系统之input_event数据上报过程
一匹马马马
LinuxC嵌入式Linux驱动
我们数据上报是在device层,其中上报的一个入口是调用input_event(dev,EV_KEY,code,!!value);那么,那么首先在在其中做的判断是是否支持evbit,什么意思呢?我们还记得在module_init中会做一个初始化设置:设置了当前设备能够产生按键数据--将某个bit置1,和当前设备能够产生的输入按键类型,比如power键,音量up键等。设置方法如下:__set_bit
- STM32CubeIDE ADC 单次转换模式
zateper
STM32嵌入式
目录一、先贴三张官方文档的截图二、整理一下流程三、CubeMX的配置四、代码生成及分布五、需要用户自己添加的代码附:官方例程一、先贴三张官方文档的截图翻译一下大概的意思:1)顶层参数配置a.ADC的时钟不能高于14MHzb.可用HAL_ADC_MspInit()使能时钟c.时钟源选择、时钟分频配置。2)基础配置a.使用HAL_ADC_Init()来初始化一些参数(使用了大量的SET_BIT()函数
- AVR单片机教程——EasyElectronics Library v1.2手册
jerry_fuyi
索引:bit.hdelay.hpin.hwave.hpwm.hled.hrgbw.hbutton.hswitch.hsegment.h主要更新:添加了segment.h的文档;新增基于中断的数码管驱动,自动完成动态扫描;头文件与静态库文件下载:release。1.bit.h定义了用于位操作的宏函数,适用于8或16位整数。set_bit(r,b):将r的第b位置为1。reset_bit(r,b):将
- AVR单片机教程——EasyElectronics Library v1.1手册
jerry_fuyi
索引:bit.hdelay.hpin.hwave.hpwm.hled.hrgbw.hbutton.hswitch.h主要更新:用枚举类型替换了大部分宏定义;添加了wave.h、pwm.h、switch.h的文档。头文件与静态库文件下载:release。1.bit.h定义了用于位操作的宏函数,适用于8或16位整数。set_bit(r,b):将r的第b位置为1。reset_bit(r,b):将r的第b
- test_bit、set_bit和clear_bit
luck_horse
linux内核驱动
//将addr的第nr(nr为0-31)位置值置为1;//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为1的位数extern__inline__intset_bit(intnr,int*addr){intmask,retval;addr+=nr>>5;//nr大于31时,把高27的值做为当前地址的偏移,mask=1>5;mask=1>5;mask=1<<(nr&0x1f);re
- set_bit()
set
将addr的第nr位置为1 假设*addr = 0, nr = 3;则执行结果为1000(二进制数)extern __inline__ int set_bit(int nr,long * addr)...{ int mask, retval;
addr += nr >> 5;  
- 输入子系统学习笔记
丿心然
1.声明input_dev结构体staticstructinput_dev*buttons_dev;2.init函数中分配input_dev结构体并对其设置、注册/*1.分配一个input_dev结构体*/
buttons_dev=input_allocate_device();;
/*2.设置*/
/*2.1能产生哪类事件*/
set_bit(EV_KEY,buttons_dev->
- 回写失败的处理:Handle_write_error
fengyuzaitu
崩溃系统写入
这个函数处理处理writepage的返回值,writepage函数调用文件系统写入的函数,然后返回写入的状态。通过内核源码的查看: res = mapping->a_ops->writepage(page, &wbc);
if (res flags);
else
set_bit(AS_EIO, &mapping->flags);
}
unlock_page(page);从这里
- 理解bitops中的__set_bit及其应用
xiaominthere
作者:可kay原作网址:http://blog.chinaunix.net/uid-26746189-id-3379014.html【代码基于AndroidJB】 【参考:http://blog.csdn.net/lbmygf/article/details/6569580】位操作在kernel中很普遍,以下针对__set_bit函数为例来分析其原理:在kernel/include/asm-gen
- 编程珠玑的一些笔记
shufac
位操作: 关于除法, 取模i>>SHIFTi/32i&MASKi%32[大于32的部分(是32的倍数)都被与掉] #define N 10000000#define SHIFT 5#define MASK 0x1f#define BITSPERWORD 32int a[N/BITSPERWORD+1]; void set_bit(int i){ a[i>>SHIFT]|=1>SHIFT]&=
- Input event驱动
wangzhen209
Inputevent驱动AndrewHuangLinux专门对输入设备。键盘,鼠标,手柄,触摸屏。按键。封装一个类驱动。主要统一与应用程序接口。这一类的设备结点都是在/dev/input/eventn(0evbit);set_bit(EV_REL,input_dev->evbit);input_dev->evbit =BIT_MASK(EV_KEY)|BIT_MASK(EV_REL);初始化/pr
- 海量数据处理之求1亿个整数中的最大的k个数
kate19930802
题目描述:输入:一亿个整数,有重复的数字,整数保存在一个文件中输出:文件中最大的k个数限制:尽量以最快的速度完成任务。具体解决方法:1.位图解决位图为用比特位来存储数据,如果i比特位为1,则该位在表示整数i,为0,则不是用该方法主要提供三个函数接口:设置比特位:set_bit(int*data,int num) 清除比特位:clr_bit(int*data,intnum)获得某个比特位:get_b
- Linux cpu核心代码set_bit的实现分析
freesoftman
linux
在arm系统中,对cpu核的设计。使用了位技术变量来代表每个cpu的使用情况。
但是这里考虑到多核对同一变量的设置,因为有了多核访问,于是乎就需要防止冲突的机制。真样产生了特殊情况的操作位接口--> macro bitop, name, instr。
使用汇编的形式来完成。主要的技术,是arm arch6中的strex, ldrex。
STREX指令的英文解释如下:
- set_bit(unsigned int bit,volatile unsigned long *p)研究
linxi_hnh
#includevoidset_bit(unsignedintbit,volatileunsignedint*p){ unsignedintmask=1>5; *p|=mask; printf("p=%p\n",p); printf("*p=0x%x\n",*p);} intmain(){ inta=31; intb
- 《Android系统学习》第一章:Input子系统驱动部分
tankai19880619
一、Input设备(鼠标、键盘、触摸板)的LinuxDriverinputcore提供的接口:motion_touchpad=input_allocate_device();//创建input设备
set_bit(ABS_MT_TOUCH_MAJOR,motion_touchpad->keybit);
set_bit(ABS_MT_POSITION_X,motion_touchpad->keybi
- AD7879-I2C touchscreen 中事件的处理过程
zhengsheng23
cstructreportbufferinputevents
接着上次AD7879-I2C对事件的处理过程分析
1.设置事件
2.上报事件
先看设置事件部分
__set_bit(EV_ABS,input_dev->evbit);
__set_bit(ABS_X,input_dev->absbit);
__set_bit(ABS_Y,input_dev->absbit);
__set_bit(ABS_PRESSURE,input_dev->abs
- [input] Linux 输入子系统(二)
muojie
注册一个INPUT设备hwm_obj->idev=input_allocate_device();//申请input_dev结构
if(!hwm_obj->idev)
{
err=-ENOMEM;
HWM_ERR("unabletoallocateinputdevice!\n");
gotoexit_alloc_input_dev_failed;
}
set_bit(EV_REL,hwm_obj
- linux内核中的位运算
iamonlyme
linux内核
在linux内核中有很多位运算函数,如:set_bit,clear_bit,clear_bit,test_and_set_bit等等。1.set_bitstatic__always_inlinevoid
set_bit(unsignedintnr,volatileunsignedlong*addr)
在起始地址为addr的位图中设置第nr位;是原子操作。2.__se
- 内核中的基本C库函数 位操作
yongan1006
c测试
http://hi.baidu.com/yavacom/blog/item/46c8082902d2bcf7e7cd40d2.html位操作set_bit在位图中原子地设置某一位voidset_bit(intnr,volatilevoid*addr)nr为要设置的位,addr为位图的起始地址这个函数是原子操作,如果不需要原子操作,则调用__set_bit函数,nr可以任意大,位图的大小不限于一个
- Input event驱动(ppt)
wenhui_
structreportinputbuttondellkeyboard
Inputevent驱动AndrewHuangLinux专门对输入设备。键盘,鼠标,手柄,触摸屏。按键。封装一个类驱动。主要统一与应用程序接口。这一类的设备结点都是在/dev/input/eventn(0evbit);set_bit(EV_REL,input_dev->evbit);input_dev->evbit =BIT_MASK(EV_KEY)|BIT_MASK(EV_REL);初始化/pr
- 理解bitops中的__set_bit及其应用
lbmygf
linuxstructapilist活动input
在include/linux/bitops.h中对比特位操作的API中:bit0istheLSBofaddr;bit32istheLSBof(addr+1).如何来理解下面的代码呢?//Note:nr为要设置的比特位(可以是0或者更大的值),addr为位图的起始地址void__set_bit(intnr,volatileunsignedlong*addr){ unsignedlongmask=
- set_bit()
wzz_momo
extern__inline__intset_bit(intnr,long*addr);将addr的第nr位置为1假设*addr=0,nr=3;则执行结果为1000(二进制数)
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro