- 博客(294)
- 资源 (22)
- 收藏
- 关注
原创 《linux设备驱动开发详解》学习之globalmem
1.代码:#include #include #include #include #include //#include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0x1000 /*4KB*/#de
2012-08-20 18:01:12 1218
转载 再谈“我是怎么招聘程序员的” ---很不错的一篇文章
我以前写过一篇“我是怎么招聘程序员的”的文章(在CSDN那里有很多人进行了回复)。今天,我想再谈谈关于招聘和面试这方面的东西,主要是以下这些原因:近半年来我在进行了大量的招聘工作,对面试有一些新的体会。 酷壳最近发布了几篇趣味面试题(面试题一,面试题二,面试题三),从回复中让我有一些思考。我有一个同事最近面试了一家公司,他和我分享了一个博士专家对他的面试,也让我思考了一些。 在豆瓣上看
2012-08-17 17:37:23 1481 1
转载 阻塞与非阻塞I/O
阻塞与非阻塞I/O还记得上篇 我们讲到的是linux中并发控制访问的手段有哪些????原子、信号量、自旋锁、互斥体。这是为了保护临界区的资源,是多个进程对共享资源的并发访问的一种处理手段。但是,在驱动程序中,我们常常为了支持用户空间对设备的灵活访问,引入了阻塞与非阻塞I/O两种不同模式。 阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。因为
2012-08-17 15:34:03 1341
转载 什么是 "asmlinkage"?
什么是 "asmlinkage"?相信大家在看linux的source code的时候,都会注意到asmlinkage这个宏,它是用来做什么的呢?The asmlinkage tag is one other thing that we should observe about this simple function. This is a #define for some gcc m
2012-08-17 13:30:43 471
转载 内核编程中的EXPORT_SYMBOL
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用 。 您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。Linux symbol export method:[1] If we want export the sy
2012-08-17 13:29:59 961
原创 浅析linux printk的实现
printk函数是我们调试linux内核必备的打印接口,printk定义在/kernel/路径下声明在/linux/kernel.h中,如果在某个文件中使用printk时编译通不过,通常都是未包含这个头文件(当然还有语法错误,呵呵~)/** * printk - print a kernel message * @fmt: format string *
2012-08-17 12:16:40 2746
原创 C语言中死循环的三种写法
C语言中死循环的三种写法1.while(1){ ;}2.for(; ;){ ;}3LOOP:......goto LOOP;第一种写法明显比第二种写法的效率要高,第三种常用在嵌入式编程中
2012-08-01 17:20:11 26010
转载 FTP 命令详解
FTP> ! 从 ftp 子系统退出到外壳。 FTP> ? 显示 ftp 命令说明。? 与 help 相同。 格式:? [command] 说明:[command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 FTP> append 使用当前文件类型设置将本地文件附加到远程计算机上的文件。 格式:appe
2012-08-01 15:56:28 997
原创 使用tpm命令查看linux安装的软件
Ubuntu和Fedora都可以查看的。rpm管理软件包 很简单rpm -qpl:rpm软件包中包含的文件列表rpm -i:安装指定的软件包到当前linux系统rpm -ivh:安装指定的软件包时显示详细的安装信息rpm -force:强制安装软件包rpm -e:卸载指定的软件包rpm -U:升级指定的软件包(如果指定的软件包在系统中没有的话,执行过程等同与安装)rpm -a:查
2012-07-25 15:10:55 2159
原创 修改虚拟机的grub.cfg文件后无法启动的解决办法
很多知识不是有困难,而是不知道~~激动时,快速按上下键,就可以进入启动界面,选之前的版本就可以启动了
2012-07-25 14:57:28 2157
转载 800个有趣句子帮你记忆7000个单词
800个有趣句子帮你记忆7000个单词 1. With my ownears I clearly heard the heart beat of the nuclear bomb. 我亲耳清楚地听到原子弹的心脏的跳动。 2. Next year the bearded bear will bear adear baby in therear.明年,长胡子的熊将
2012-07-18 11:41:45 39340
转载 linux netlink 机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火
2012-07-12 13:35:16 1114
转载 36篇精品文章搞定所有TOEIC单词
新概念三 Lesson 14 A noble gangster 贵族歹徒There was a time when the owners of shops and businesses in Chicago had to pay large sums ofmoney to gangstersin returnfor 'protection.' If the money was not
2012-07-10 17:08:50 35091
转载 cscope的用法
一步一步学cscope我的平台:Linux SUSE 10.1 硬件平台普通1, cscope安装软件下载:http://sourceforge.net/project/showfiles.php?group_id=4664软件安装: ./configure --with-flex (注:如果平台是Linux,最好带上 --with-flex选项)make (注:我没
2012-07-09 13:31:15 1196
转载 linux call chain
Linux中的通知链技术在Linux内核中,各个子系统之间有很强的相互关系,某些子系统可能对其它子系统产生的事件感兴趣。为了让某个子系统在发生某个事件时通知感兴趣的子系统,Linux内核引入了通知链技术。通知链只能够在内核的子系统之间使用,而不能够在内核和用户空间进行事件的通知。1 数据结构:通知链有四种类型:·原子通知链( Atomic notifier chains ):通知链
2012-07-03 17:48:44 1074
转载 Linux USB 鼠标驱动程序详解
Linux USB 鼠标驱动程序详解USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。 USB 设备驱动程序(usb d
2012-06-27 14:37:14 835
转载 LINUX自旋锁详解
LINUX自旋锁详解 对于互斥, 旗标是一个有用的工具, 但是它们不是内核提供的唯一这样的工具. 相反, 大部分加锁是由一种称为自旋锁的机制来实现. 不象旗标, 自旋锁可用在不能睡眠的代码中, 例如中断处理. 当正确地使用了, 通常自旋锁提供了比旗标更高的性能. 然而, 它们确实带来对它们用法的一套不同的限制. 自旋锁概念上简单. 一个自旋锁是一个互斥设备, 只能有 2 个
2012-06-18 17:17:22 1084
转载 顺序锁
顺序锁当使用读/写自旋锁时,内核控制路径发出的执行read_lock或write_lock操作的请求具有相同的优先权:读者必须等待,直到写操作完成。同样地,写者也必须等待,直到读操作完成。Linux 2.6中引入了顺序锁(seqlock),它与读/写自旋锁非常相似,只是它为写者赋予了较高的优先级:事实上,即使在读者正在读的时候也允许写者继续运行。这种策略的好处是写者永远
2012-06-18 17:10:14 628
原创 判断字节序
#include stdio.h>typedef union{ unsigned short int value; unsigned char byte[2];}to;int main(int argc, char *argv){ to typeorder; typeorder.value = 0x1234; if
2012-06-15 17:49:32 541
转载 linux内存寻址
本文讲述linux在X86平台上的分段和分页机制MMU(内存控制单元)通过分段单元的硬件电路将逻辑地址转换成线性地址,再通过分页单元的硬件电路把线性地址转换为物理地址: 逻辑地址:包含在机器指令语言指令中用来指定一个操作数或一条指令的地址。每个进程都有自己的代码段,数据段,逻辑地址就是相对于代码段或数据段的偏移地址。 线性地址:程序代码产生逻辑地址,
2012-06-15 13:54:29 474
转载 linux内存寻址
本文讲述linux在X86平台上的分段和分页机制MMU(内存控制单元)通过分段单元的硬件电路将逻辑地址转换成线性地址,再通过分页单元的硬件电路把线性地址转换为物理地址: 逻辑地址:包含在机器指令语言指令中用来指定一个操作数或一条指令的地址。每个进程都有自己的代码段,数据段,逻辑地址就是相对于代码段或数据段的偏移地址。 线性地址:程序代码产生逻辑地址,
2012-06-15 13:54:28 568
转载 C语言中可变参数函数的设计
c语言中可变参数函数的设计 ----- 最近想好好学学这个, 先把网上搜集得资料贴上. ===========================================================================================================================================
2012-06-11 17:37:11 1606 1
转载 浅析Linux的软中断的实现
作者:独孤九贱平台:2.6.31.13 + x86 32位供仅讨论学习之处,不对错误之处负责,转载请注明出处。1、软中断软中断的原理就略过了,讲内核的书上都有,此处省略1500字。。。。。。1.1 注册还是以我最熟悉的两个老朋友做为开篇: open_softirq(NET_TX_SOFTIRQ, net_tx_action);
2012-06-11 11:13:35 2115
转载 linux软中断的实现
linux软中断的实现 中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Half
2012-06-11 11:11:27 1103
转载 转载只为记录经典之<Linux驱动程序编写演示----编译驱动程序 >
Linux驱动程序编写演示----编译驱动程序 标签: linux Linux驱动程序编写演示----编译驱动程序1驱动编写:#include #include static int __init test_driver_init(void){ /* register this driver */ printk("Hello test_driver
2012-05-23 17:08:01 1438
转载 转载只为记录经典之<linux write的奥秘>
在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一个简简单单的write函数能够完成向设备里面写数据的复杂过程。这里的源代码主要来自两个
2012-05-23 16:39:04 1056
转载 linux驱动中的ioctrl
我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混 了,这几天才弄明白它,于是在这里清理一下头脑。 一、 什么是ioctl。 ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道
2012-05-23 16:28:16 1774 1
转载 转载只为记录经典之<linux 内核编译祥解 >
linux 内核编译祥解分类: Linux管理 2007-08-15 14:01 5968人阅读 评论(1)收藏 举报新内核可以在http://www.kernel.org下载。先把linux-2.6.18.2.tar.bz2 复制到/usr/src/ 的下面tar –jxvf linux-2.6.18.2.tar.bz2cd linux-2.6.
2012-05-16 14:32:58 730
转载 转载只为记录经典之<linux下解压命令大全>
linux下解压命令大全.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz
2012-05-16 14:03:55 505
转载 转载只为记录经典之<asmlinkage>
什么是 "asmlinkage"?相信大家在看linux的source code的时候,都会注意到asmlinkage这个宏,它是用来做什么的呢?The asmlinkage tag is one other thing that we should observe about this simple function. This is a #define for some gcc m
2012-05-15 16:40:12 594
转载 转载只为记录经典之<协议端口号详解 >
协议端口号详解 计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是
2012-05-15 11:12:32 3606
转载 转载只为记录经典之<内核控制路径,内核同步,中断,异常--x86>
1.6.1. The Process/Kernel Model.......Unix kernels do much more than handle system calls; in fact, kernel routines can be activated in several ways:A process invokes a system call.The CP
2012-05-10 16:42:53 1094
转载 转载只为记录经典之<Linux下的多线程编程>
Linux下的多线程编程1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么
2012-05-07 14:32:33 533
原创 linux中进程间通信和线程间通信的区别
linux中进程间通信和线程间通信的区别1.linux中的进程,是有fork()系统调用创建的,进程间都有独立的地址空间,他们之间不能直接通信,必须通过一些IPC进程进程间通信机制来完成。常见的IPC有:PIPE,命名管道,信号,共享内存以及socket等;2.linux中的线程,是clone()系统调用创建的,一个进程下的线程间是共享内存空间的,故线程A可以之间访问线程B
2012-05-07 14:11:59 1735
转载 转载只为记录经典之<linux多线程编程>
Linux多线程编程(不限Linux)2010-10-30 20:58 by 吴秦, 32559 visits, 收藏, 编辑——本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到
2012-05-07 11:56:20 592
转载 判断字节序的一个方法
#include stdio.h>typedef union{ unsigned short int value; unsigned char byte[2];}to;int main(int argc, char *argv){ to typeorder; typeorder.value = 0xabcd; if
2012-05-03 14:04:29 671
转载 转载只为记录经典之<轻量级进程和普通进程以及线程之间的区别>
轻量级进程和普通进程的区别在于:前者没有独立的用户空间(内核态线程无用户空间,用户态线程共享用户空间),而普通进程有独立的内存空间;表现在数据结构上:线程的mm=null或者与其他线程共享,而进程有独立的mm_struct。内核线程内核线程只运行在内核态,不受用户态上下文的拖累。 Ø 处理器竞争:可以在全系统范围内竞争处理器资源;Ø
2012-05-02 16:50:31 1067
转载 转载只为记录经典之<使用linux中的sed编辑器>
使用linux中的sed编辑器sed means stream editer作者:Emmett Dulaneysed 编辑器是Linux 系统管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用工具是 sed。
2012-04-28 10:34:59 589
转载 转载只为记录经典之<linux tcpdump>
linux下抓包封信工具Tcpdump详解采用命令行方式,它的命令格式为:tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ] 1. tcpdump的选项介绍 -a 将网络地址和广播地址转变成名字;
2012-03-26 15:37:38 743
EasyBCD系统引导修复工具v2.2.0+汉化特别版
2013-01-18
英文版 The C++ Programming Language Special 3rd Edition
2011-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人