文章编写了一个if语句写的小脚本,脚本功能为创建一个bash脚本文件,效果如下:第一条,条件测试:如果已经存在同名的bash脚本将会用vim进入脚本并且光标停留在最后一行第二条,条件测试:如果已经拥有一个同名的非bash脚本的shell脚本将提示已经存在一个非bash的shell脚本并且..
分类:
其他好文 时间:
2015-03-16 06:33:29
阅读次数:
184
穿插在代码研读中的细节数据类型:类型定义:内核使用typedef来定义各种数据类型,以避免依赖于体系结构相关的特性,比如,各处理器上标准数据类型的位长可能不相同。定义的类型名称如sector_t、pid_t等,这些都是由内核在特定于体系结构的代码中定义的,以确保相关类型的值落..
分类:
其他好文 时间:
2015-03-16 06:32:25
阅读次数:
168
1、asmlinkage与FASTCALLasmlinkage告诉编译器将参数存入局部栈FASTCALL通知(与体系结构相关的)编译器将参数传给通用寄存器include/asm/linkage.h#defineasmlinkageCPP_ASMLINKAGE__attribute__((regparm(0)))#defineFASTCALL(x)x__attribute__((regparm(3)))#definefastcall__..
分类:
其他好文 时间:
2015-03-16 06:31:36
阅读次数:
199
部分引用他人总结,如有侵权,请告知本人删除一、引导过程内核引导过程依次涉及的文件为src/arch/i386/boot/bootsect.Ssrc/arch/i386/boot/setup.Ssrc/arch/i386/boot/compressed/head.Ssrc/arch/i386/boot/compressed/misc.csrc/arch/i386/boot/kernel/head.Ssrc/init/main.c1..
分类:
系统相关 时间:
2015-03-16 06:30:14
阅读次数:
339
linux驱动makefile写法:
ifneq
($*KERNELRELEASE),)
obj-m
:=hello.o
else
KERNELDIR?=/lib/modules/$(shell
uname-r)/build
PWD
:=$(shellpwd)
default:
$(MAKE)
-C$(KERNELDIR)M=$(PWD)modules
endif初始化和关闭:static
int__initinitialization_funciton(void)
{
*
}
mo..
分类:
其他好文 时间:
2015-03-16 06:30:11
阅读次数:
202
linux驱动——并发和竟态序——正在运行的多个用户空间程序可能以一个令人惊讶的组合方式访问我们的代码。SMP系统甚至可能在不同的处理器上同时执行我们的代码。内核代码是可抢占的,因此我们的驱动程序代码可在任何时候丢失对处理器的独占。信号量(semaphore)的实现: 有一对..
分类:
其他好文 时间:
2015-03-16 06:30:42
阅读次数:
180
高级字符驱动程序操作之ioctlioctl: 用户空间原型:int
ioctl(intfd,unsignedlongcmd,…); “...”并非可变参数,而是可选参数,防止编译器进行类型检查。 驱动原型:int
(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,
unsignedlongarg); inode和flip是原来的f..
分类:
其他好文 时间:
2015-03-16 06:29:53
阅读次数:
276
在linux中,一个等待队列通过一个“等待队列头(wait
queuehead)”来管理,等待队列头是一个类型为wait_queue_head_t的结构体,定义在<linux/wait.h>中 两种定义并初始化方法: DECLARE_WAIT_QUEUE_HEAD(name); wait_queue_head_t
my_queue; init_waitqueue_head(&m..
分类:
其他好文 时间:
2015-03-16 06:30:21
阅读次数:
258
异步通知: 用户程序需完成两个步骤: 1、指定属主进程owner 使用fcntl系统调用的F_SETOWN,属主进程的进程ID就被保存在filp->f_owner中 2、真正启用异步通知机制 在设备中设置FASYNC标志,通过fcntl的F_SETFL 执行完这两个步骤后,输入文件就可以在新数据到达时请求发送..
分类:
其他好文 时间:
2015-03-16 06:31:28
阅读次数:
183
权能与受限操作 全部全能操作可以在<linux/capability.h>中找到,其中包含了系统能够理解的所有权能;不修改内核源码,对驱动程序开发者来讲有意义的权能如下所示: CAP_DAC_OVERRIDE 越过文件或目录的访问权限(数据访问控制或DAC)的能力 CAP_NET_ADMIN 执行网络管理任..
分类:
其他好文 时间:
2015-03-16 06:31:18
阅读次数:
238
WeLongDaWoodmanufacturehardwoodcore3timehotpressBrownfilmfacedplywood.ThecoreofthiskindBrownfilmfacedplywoodismadefrom13layersfor18mmthicknessplywood.Brownfilmfacedplywood,Brownphenolicfilm,WBPglue,hardwoodcore1220x2440x18mm--------US裕342/CBMFOBQingdaoport..
分类:
其他好文 时间:
2015-03-16 06:29:28
阅读次数:
136
度量时间差 时钟中断由定时硬件以周期性的间隔产生,这个间隔由内核根据HZ值设定,HZ是一个与体系结构有关的常数,定义在<linux/param.h>或者该文件包含的某个子平台相关的文件中。 可以通过修改HZ值来改变系统时钟中断发生的频率,但必须重新编译内核以及所有模块。 每..
分类:
其他好文 时间:
2015-03-16 06:28:28
阅读次数:
209
延时操作: 长延时,长于一个时间滴答的。 忙等待: 通过监视jiffies寄存器实现 while(time_before(jiffies,
j1)) cpu_relax(); cpu_relax()的实现与平台有关,大部分系根本不会做任何事情,而在对称多线程系统上,可能会将处理器让给其它线程。 如果进入循环前禁用了中断,..
分类:
其他好文 时间:
2015-03-16 06:28:39
阅读次数:
326
tasklet(小任务): tasklet在很多方面类似内核定时器:他们始终在中断期间运行,始终会在调度他们的同一CPU上运行,而且都接收一个unsigned
long参数。不同的是,不能要求tasklet在某个给定的时间执行,调度一个tasklet,表明我们只是希望内核选择某个其后的时间来执行给定的函..
分类:
其他好文 时间:
2015-03-16 06:27:49
阅读次数:
412
一、闭包的概念计算机语言要支持闭包的前提条件有2个:1、支持函数类型,能够将函数作为参数或返回值传递;2、支持函数嵌套示例:funccaculate(opr:String)->(Int,Int)->Int{varresult:(Int,Int)->Intswitch(opr){case"+":result={(a:Int,b:Int)->Intinreturna+b}d..
分类:
编程语言 时间:
2015-03-16 06:29:18
阅读次数:
226
linux的网卡配置文件在"/etc/sysconfig/network-script/"目录下。DEVICE=eth0
HWADDR=00:0C:29:DC:BF:57
TYPE=Ethernet
UUID=8bb9e970-45fd-4007-8333-0ef5000e9603
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=dhcp常用配置网卡的命令ifupeth0#打开eth0网卡ifdowneth#关闭eth0网卡..
分类:
系统相关 时间:
2015-03-16 06:29:07
阅读次数:
182
静态代码块格式:static{静态代码块中的执行语句}特点:随着类的加载而执行,只执行一次,用于给类进行初始化,并优先于主函数执行考虑如下java语句classStaticCode
{
static
{
System.out.println("a");
}
}
publicclassDemo{
static
{
System.out.println("b");
}
publicstat..
分类:
编程语言 时间:
2015-03-16 06:27:35
阅读次数:
214