自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (6)
  • 收藏
  • 关注

转载 VI高级命令集锦

1.交换两个字符位置  xp  其实就是删除光标当前字符(x),然后再将缓存的字符贴出(p)  2.上下两行调换  ddp  实际就是(dd)删除当前行,(p)后即将缓存的行贴出  3.把文件内容反转  :g/^/m0  找到每一行,然后m移动到当前第一行的上面  4.上下两行合并   J  实用性:高,shift+j  5.删除所有行   dG

2011-06-30 01:46:00 1269

原创 ctags -R 不能递归生成解决方案

使用vim+ctags已经有好一段时间了,但一直有一个问题,ctags -R 并没有递归的生成tags文件今天自己仔细解决了不能递归创建CTAGS的原因是我们用的是GNU EMACS ETAGS当我们用ctags --version时,显示的是emacs的ctags,用网上的办法:sudo apt-get install exuberant-ctags

2011-06-16 23:31:00 7168

转载 IO端口和IO内存

在驱动程序编写过程中,很少会注意到IO Port和IO Mem的区别。虽然使用一些不符合规范的代码可以达到最终目的,这是极其不推荐使用的。结合下图,我们彻底讲述IO端口和IO内存以及内存之间的关系。主存16M字节的SDRAM,外设是个视频采集卡,上面有16M字节的SDRAM作为缓冲区。

2011-06-13 00:14:00 967 3

转载 register_chrdev_region函数源码分析

如何找到一个有效的切入点去深入分析内核源码,这是一个令人深思的问题。本文以前文中未详细说明的函数为切入点,深入分析char_dev.c文件的代码。如果你已经拥有了C语言基础和一些数据结构基础,那么还等什么?Let’s go!在《字符设备驱动分析》一文中,我们说到register_chrdev_region函数的功能是在已知起始设备号的情况下去申请一组连续的设备号。不过大部分驱动书籍都没

2011-06-11 00:52:00 657

转载 内核同步方法-原子操作

原子操作原子操作用于执行轻量级、仅执行一次的操作,比如修改计数器,某些条件下的增加值或设置位等。原子操作指的是指令以原子的方式执行。之所以用原子来修饰这种操作方式是因为它们均不可再分。也就是说,原子操作要么一次性执行完毕,要么就不执行,这些操作的执行过程是不可被打断的。原子操作的具体实现取决于体系架构,以下代码如无特别声明,均来自linux/arch/x86/include/asm/a

2011-06-10 23:47:00 1452

原创 pthread_mutex_lock的实现!!

找了好久的pthread_mutex_lock函数的实现原理,,现粘贴如下。。。int__pthread_mutex_lock (mutex)     pthread_mutex_t *mutex;{  assert (sizeof (mutex->__size) >= sizeof (mutex->__data));  int oldval;  pid

2011-06-10 01:43:00 21354 1

转载 互斥锁的实现(转)

“ 信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在 那里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用

2011-06-09 00:44:00 16587

转载 linux 中断调用过程

linux 中断调用

2011-06-02 16:43:00 1740

《零基础学算法》源代码

本资源是《零基础学算法》的源代码 对于那些刚开始学习算法的应该挺有帮助的

2010-12-01

《零基础学C语言》十七章源代码

《零基础学C语言》的第十七章代码。。对初学者有帮助 #include <stdio.h> /*使用printf要包含的头文件*/ #include <conio.h> void main(void) /*主函数*/ { int A[2][3][4]={0}; /*声明一个3维数组*/ printf("A is %p\n",A); /*数组名指针,3级指针*/ printf("A[0] is %p\n",A[0]); /*2级指针*/ printf("A[0][0] is %p\n",A[0][0]); /*1级指针*/ printf("&A[0][0][0] is %p\n",&A[0][0][0]); /*数组首元素的内存地址*/ getch(); /*等待,按任意键继续*/ }

2010-09-06

《零基础学C语言》十八章源代码

#include <stdio.h> /*使用printf要包含的头文件*/ #include <conio.h> struct person /*结构体变量定义*/ { char name[20]; /*字符串姓名*/ char email[50]; /*字符串email*/ }; void print(void) /*print函数*/ { struct person ls={"Li Si", "ls@163.com"}; /*声明结构体变量ls*/ printf("name:%s\n",ls.name); /*信息输出*/ printf("email:%s\n",ls.email); }

2010-02-03

《零基础学C语言》十九章源代码

#include <stdio.h> /*使用printf要包含的头文件*/ #include <conio.h> struct person /*结构体变量定义*/ { char name[20]; /*字符串姓名*/ char email[50]; /*字符串email*/ }; void print(void) /*print函数*/ { struct person ls={"Li Si", "ls@163.com"}; /*声明结构体变量ls*/ printf("name:%s\n",ls.name); /*信息输出*/ printf("email:%s\n",ls.email); }

2010-02-03

《零基础学C语言》20章源代码

#include <stdio.h> /*使用printf要包含的头文件*/ #include <conio.h> #define CUBE(x) x*x*x /*宏定义*/ void main(void) /*主函数*/ { int res=CUBE(3); /*实参*/ printf("3的3次方为%d\n",res); /*输出*/ res=CUBE(3+1); printf("4的3次方为%d\n",res); int res=CUBE(4); /*实参*/ printf("4的3次方为%d\n",res); getch(); /*等待,按任意键继续*/ }

2010-02-03

《零基础学C语言》第二一章代码

#include "stdio.h" #include "string.h" #include "fcntl.h" #include "stdlib.h" #include "dos.h" #include "dir.h" #include "io.h" char driver,curdriver, path[MAXDIR], curpath[MAXDIR]; int p; void search_path(); void direc(); void scan_1741(char *); void main(int argc, char *argv[]) { curdriver = getdisk(); /*得到当前驱动器号*/ getcwd(curpath, MAXDIR); /*得到当前路径名称*/ if(argc>=2&&argv[1][1]==':') { driver = toupper(argv[1][0] - 'A'); setdisk(driver); /* 设置的驱动器号,0-A盘,1-B盘,以此类推*/ driver += 'A'; } else { driver = curdriver + 'A'; } chdir("\\"); /* 新设置的路径名称*/ search_path(); printf("\n\n"); setdisk(curdriver); chdir(curpath); getch(); } /*===============================================*/ void search_path() { struct ffblk direcent; char subdir[MAXPATH]; chdir("\\"); direc(); getcwd(path, MAXDIR); /*得到当前路径名称*/ p = findfirst("*.*", &direcent, 0x3f); while(!p) { if(direcent.ff_attrib & 0x10 == FA_DIREC) { chdir(direcent.ff_name); printf("\n%s\n", direcent.ff_name); direc(); chdir(path); } p = findnext(&direcent); } } /*==================================================*/ void direc() { struct ffblk ffb; int done; done = findfirst("*.exe*", &ffb, 0); while(!done) { scan_1741(ffb.ff_name); done = findnext(&ffb); } } /*=====================================================*/ void scan_1741(char *comm1) { FILE *fi; char *comm2, *comm3, *comm4, *ptr1, *ptr2; char buf[1760]; int x, y, handle; long length; comm2 = "VUWRQSP"; comm3 = ".COM"; comm4 = ".EXE"; if((fi=fopen(comm1,"rb+")) == NULL) { printf("\n NOt open the file!"); return ; } fseek(fi, -0x8fL,SEEK_END); fread(buf, 0x8fL, 1, fi); ptr1 = strstr(buf, comm2); /*得到在s1中第一次包含s2字符串的位置*/ fseek(fi, -32L, SEEK_END); fread(buf, 32L, 1, fi); ptr2 = strstr(buf, comm1); if(ptr1 == NULL && ptr2 == NULL) { printf("\nNo 1741 virus!\n"); fclose(fi); } else { printf("\n Found the 1741 virus!\n"); if(strstr(comm1,comm3) != NULL) { fseek(fi, -1741L, SEEK_END); fread(buf, 3, 1, fi); fseek(fi, 0L, SEEK_SET); fwrite(buf, 3, 1, fi); fclose(fi); handle = open(comm1,O_WRONLY|O_BINARY); chsize(handle, filelength(handle)-1746L); /*改变文件大小*/ close(handle); printf("\n1741 virus is cleaned!\n"); } if(strstr(comm1, comm4) != NULL) { fseek(fi, -1332L, SEEK_END); fread(buf, 2, 1, fi); fseek(fi, 20L, SEEK_SET); fwrite(buf, 2, 1, fi); fseek(fi, -1328L, SEEK_END); fread(buf, 2, 1, fi); fseek(fi, 22L, SEEK_SET); fwrite(buf, 2, 1, fi); fseek(fi, 0L, SEEK_END); length = ftell(fi) - 1741L; x = length/512 + 1; y = length%512; fseek(fi, 2L, SEEK_SET); putw(y, fi); fseek(fi, 4L, SEEK_SET); putw(x, fi); fclose(fi); handle = open(comm1,O_WRONLY|O_BINARY); chsize(handle, filelength(handle)-1741L); close(handle); printf("\n 1741 virus is cleaned!\n"); } } }

2010-02-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除