浅析linux下键盘设备工作和注册流程
懒得写了, 转几篇过来:
原帖地址:
http://blog.chinaunix.net/u1/38994/showart_1130025.html
浅析linux下键盘设备工作和注册流程
【浅析linux下鼠标驱动的实现】
input_init(
)
=
>
=
>
class_register(
&
input_class)
;
注册input类
input_proc_init(
)
;
创建proc下的目录和文件
register_chrdev(
INPUT_MAJOR,
"input"
,
&
input_fops)
;
注册驱动程序到cdev_map上,
以待驱动设备.
drivers\input\keyboard\pxa3xx_keypad.
c为我们的keyboard设备,
pxa3xx_keypad_probe=
>
request_irq(
IRQ_ENHROT,
&
enhanced_rotary_interrupt,
IRQF_DISABLED,
"Enhanced Rotary"
,
(
void
*
)
keypad)
;
注册快捷键中断
request_irq(
IRQ_KEYPAD,
pxa3xx_keypad_interrupt,
IRQF_DISABLED,
pdev-
>
name,
keypad)
;
注册中断
static
irqreturn_t pxa3xx_keypad_interrupt(
int
irq,
void
*
dev_id)
{
struct
pxa3xx_keypad *
keypad =
dev_id;
uint32_t
kpc =
keypad_readl(
KPC)
;
if
(
kpc &
KPC_MI)
pxa3xx_keypad_scan_matrix(
keypad)
;
if
(
kpc &
KPC_DI)
pxa3xx_keypad_scan_direct(
keypad)
;
return
IRQ_HANDLED;
}
在irq中如果读到了key,
那么会直接调用
input_report_key(
keypad-
>
input_dev,
lookup_matrix_keycode(
keypad,
row,
col)
,
new_state[
col]
&
(
1 <
<
row)
)
;
static
inline
unsigned
int
lookup_matrix_keycode(
struct
pxa3xx_keypad *
keypad,
int
row,
int
col)
{
return
keypad-
>
matrix_keycodes[
(
row <
<
3)
+
col]
;
}
input_report_key(
struct
相关文档:
感觉对这个有些晕,做了个实验,弄清楚了。
实验思路,用同一份代码编译同时生成动态和静态库,通过测试程序调用,看调用的是动态库还是静态库。
生成静态库代码:
/***********hellod.h*************/
#ifndef _HELLO_S_H
#define _HELLO_S_H
void prints(char *str);
#endif
/*hellod.c*/
#include "hellod ......
Linux IP设置
修改ip:
编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //设备名称,不要修改
BOOTPROTO=static //不要修改
BROADCAST=10.10.22.255 //广播地址,一般为本网段的最后一个IP
IPADDR=10.10.22.145 //ip地址
NETMASK=255.255.255.0 //子网掩码
NETWORK=10.10.22.0 //网段地址
ONBOOT ......
1. 基本概念
说到网络编程,不得不先提到OSI参考模型,其七层模型从下到上分别为
1.物理层(Physical Layer,PH)
2.数据链路层(Data Link Layer,DL)
3.网络层(Network Layer,N)
4.运输层(Transport Layer,T)
5.会话层(Session Layer,S)
6.表示层(Presentation Layer, ......
用vsFTPd来架设FTP服务器,vsFTPd服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高,高安全性。
1。查看是否安装了vsFTPd软件
[root@linuxsir001 root]# rpm -qa | grep vsftpd
如果没有任何显示,说明没有把vsFTPd安装上,如果出现的是下面的这样的提示,就证明已经安装上了。
[root@linuxsir001 ro ......
Linux中,cron被用来调度重复的任务,linux at命令被用来在指定时间内调度一次性的任务。
要使用linux at命令,你必须安装了at RPM软件包,并且 atd服务必须在运行。
可以使用一下命令启动atd服务:
[root@sso_4 sbin]# /sbin/service atd start
要判定该软件包是否被安装 ......