08 2010 档案

摘要:由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组 件的安装方法介绍一下。 1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公 布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会 出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组 件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。这 样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的 "into existing p 阅读全文
posted @ 2010-08-29 17:52 郭—大—侠 阅读(197) 评论(0) 推荐(0)
摘要:p> 古人云∶“工欲善其事,必先利其器。” 这句话,我想凡是用Delphi的朋友,应该都有很深切的体会吧。的确,如果Delphi没有了控件的支持,那么人气度一定会大大的降低,不会有现在这样多的Fan了,俺也就改行用BCB或VC了,呵呵。 但是,现在控件满天飞,不要说DSP(Delphi Super Page)了,光一个深度历险上面的控件就已经洋洋洒洒上万数了,而且每天还在更新,多恐怖啊∶)然而,选择多了以后,烦恼也就随之而来了(呵呵,如果MM也能有那么多让我挑就好了),因为无法一个个的都去试过,所以有许多的优秀控件还不是为人所知,因此我就写下了这篇文章,希望能为大家当个向导,起到一个抛砖 阅读全文
posted @ 2010-08-29 17:49 郭—大—侠 阅读(316) 评论(0) 推荐(0)
摘要:昨晚更新Ubuntu,不知道那里搞错了,报了个上述错误:/usr/lib/libgconf2-4/gconf-sanity-check-2的退出状态为256郁闷呀,还以为又要重装呢,在网上找了N个帖子,下面两个操作即可搞定》首先进入recovery模式,之行下述命令,然后重启sudo apt-get install gnome-panelsudo chmod -R 777 /tmp退出后,再进入 ok 解决了! 阅读全文
posted @ 2010-08-29 09:27 郭—大—侠 阅读(826) 评论(0) 推荐(0)
摘要:信息就是位+上下文:我们输入的任何源代码其实本质上都是由0和1组成的位(比特)序列,这些位被组织起来8个一组,成为字节。每个字节都表示程序中的某个文本字符。大部分现代系统都使用ADCII标准来表示文本字符,这种方式实际上就是用一个唯一的字节大小的整数值来表示每个字符。比如最简单的程序from K&R#include <stdio.h>int main(){ printf("hello,world/n");}被翻译成如下:#include <stdio.h>||||35(#) 105(i) 110(n) 99(c) 108(l) 117(u) 阅读全文
posted @ 2010-08-23 22:51 郭—大—侠 阅读(173) 评论(0) 推荐(0)
摘要://内核模块测试程序#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/mm.h>static unsigned long p = 0;static int __init shao_init(void){ //分配共享内存(一个页面) p = __get_free_pages(GFP_KERNEL, 0); SetPageReserved(virt_to_page(p)); printk("<1> 阅读全文
posted @ 2010-08-20 18:18 郭—大—侠 阅读(781) 评论(0) 推荐(0)
摘要:动态的将内核空间的物理地址和大小传给用户空间。本文也演示了内核空间和用户空间进行通信可以使用的两种常用方法:proc文件系统和mmap共享内存。整个内核模块,在模块插入时建立proc文件,分配内存。卸载模块的时候将用户空间写入的内容打印出来。以下是内核模块的代码和用户空间的测试代码。/*This program is used to allocate memory in kerneland pass the physical address to userspace through proc file.*/#include <linux/version.h>#include < 阅读全文
posted @ 2010-08-20 15:33 郭—大—侠 阅读(3651) 评论(0) 推荐(0)
摘要:在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages. 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射... 阅读全文
posted @ 2010-08-20 15:14 郭—大—侠 阅读(607) 评论(0) 推荐(0)
摘要:解决gedit打开txt文件乱码问题用Configuratio Editor (命令:gconf-editor),修改apps->gedit-2->preferences->encoding中的 auto_detected, 把GB18030,GBK,GB2312等添加进去就行了当然还要将添加的这几项移动到最上面就ok了,当然对于.c .h文件也是可以的!!Good Luck!!解决pdf中文不显示的问题::安装poppler-data,cmap-adobe-cns1和cmap-adobe-gb1打开文件“/etc/fonts/conf.d/49-sansserif.conf 阅读全文
posted @ 2010-08-20 09:03 郭—大—侠 阅读(283) 评论(0) 推荐(0)
摘要:本章内容分为三节。第一节讲述了 mmap 系统调用的实现,mmap允许直接将设备内存映射到用户进程的地址空间中。然后我们讨论内核 kiobuf 机制,它能提供从内核空间对用户内存的直接访问,kiobuf 系统可用于为某些种类的设备实现"裸(raw)I/O"。最后一节讲述直接内存访问(DMA)I/O操作,它本质上提供了外围设备直接访问系统内存的能力。当然,所有的这些技术都需要先了解 Linux 的内存管理是如何工作的,所以我们从内存子系统来开始本章的讨论。13.1 Linux 的内存管理这一节不是描述操作系统中内存管理的理论,而是关注于该理论在 Linux 实现中的主要特点。 阅读全文
posted @ 2010-08-19 09:24 郭—大—侠 阅读(731) 评论(0) 推荐(0)
摘要:多数的 Linux内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持!本文就总结下常见的ipc,getsockopt/setsockopt mmap netlink/socket proc/seq copy_from_user/copy_to_user文件。采用先讲解后测试代码的方式,netlink和proc由于江哥和段兄都写的比较好了我就贴了链接...好了不废话了开始 一.getsockopt/setsockopt 最近看ebtables源码,发现与内核的ipc是采用的getsockopt,具体实现是在内核中用... 阅读全文
posted @ 2010-08-18 20:15 郭—大—侠 阅读(1218) 评论(0) 推荐(0)
摘要:用户空间存取内核空间,具体的实现方法要从两个方面考虑,先是用户进程,需要调用mmap来将自己的一段虚拟空间映射到内核态分配的物理内存;然后内核空间需要重新设置用户进程的这段虚拟内存的页表,使它的物理地址指向对应的物理内存。针对linux内核的几种不同的内存分配方式(kmalloc、vmalloc和ioremap),需要进行不同的处理。关于这个话题,前面已有文章论述了,<<Linxu设备驱动程序>>也专门用一章的内容来讲述,它们所用的方法是完全一样的。这里只是重复说一遍,以温故而知新。一、Linux内存管理概述这里说一下我的理解,主要从数据结构说。1、物理内存都是按顺序分 阅读全文
posted @ 2010-08-18 20:04 郭—大—侠 阅读(264) 评论(0) 推荐(0)
摘要:http://lsec.cc.ac.cn/~tengfei/doc/ldd3/index.html驱动开发的经典大牛书籍,百读不厌呀!! 阅读全文
posted @ 2010-08-18 19:58 郭—大—侠 阅读(226) 评论(0) 推荐(0)
摘要:如果一个模块需要分配大块的内存, 它常常最好是使用一个面向页的技术. 请求整个页也有其他的优点, 这个在 15 章介绍.为分配页, 下列函数可用:get_zeroed_page(unsigned int flags);返回一个指向新页的指针并且用零填充了该页.__get_free_page(unsigned int flags);类似于 get_zeroed_page, 但是没有清零该页.__get_free_pages(unsigned int flags, unsigned int order);分配并返回一个指向一个内存区第一个字节的指针, 内存区可能是几个(物理上连续)页长但是没有清零 阅读全文
posted @ 2010-08-18 19:56 郭—大—侠 阅读(238) 评论(0) 推荐(0)
摘要:内存映射是现代 Unix 系统最有趣的特性之一. 至于驱动, 内存映射可被实现来提供用户程序对设备内存的直接存取.一个 mmap 用法的明确的例子可由查看给 X Windows 系统服务器的虚拟内存区的一个子集来见到:cat /proc/731/maps 000a0000-000c0000 rwxs 000a0000 03:01 282652 /dev/mem000f0000-00100000 r-xs 000f0000 03:01 282652 /dev/mem00400000-005c0000 r-xp 00000000 03:01 1366927 /usr/X11R6/bin/Xorg0 阅读全文
posted @ 2010-08-18 19:55 郭—大—侠 阅读(419) 评论(0) 推荐(0)
摘要:Explaining what is zero-copy functionality for Linux, why it's useful and where it needs work.By now almost everyone has heard of so-called zero-copy functionality under Linux, but I often run into people who don't have a full understanding of the subject. Because of this, I decided to write 阅读全文
posted @ 2010-08-18 19:48 郭—大—侠 阅读(257) 评论(0) 推荐(0)
摘要:之所以想写这篇帖子,是有两个方面原因。其一是内核版有一个关于《内核可以从线性 地址直接计算物理地址,用来做什么呢?》的讨论,偶说计算出物理地址可以共享给用户空间读写。dreamice兄说能否说一下详细的应用。其二是alb* 版主提到wheelz曾经写过这样一个例程,拜读了一把,发现在传递物理地址和内存大小上,wheelz的例程还有些不够灵活。alb*版主提到可以通过 文件的方式实现动态的传递。因此,偶也写了这样一个例程,可以动态的将内核空间的物理地址和大小传给用户空间。整个内核模块,在模块插入时建立proc文件,分配内存。卸载模块的时候将用户空间写入的内容打印出来。以下是内核模块的代码和用户空 阅读全文
posted @ 2010-08-18 18:38 郭—大—侠 阅读(383) 评论(0) 推荐(0)
摘要:对于任何编写内核代码的人来说,最吸引他们注意的问题之一就是如何完成调试。由于内核是一个不与某个进程相关的功能集,其代码不能很轻松地放在调试器中执行,而且也不能跟踪。本章介绍你可以用来监视内核代码和跟踪错误的技术。用打印信息调试最一般的调试技术就是监视,就是在应用内部合适的点加上printf调用。当你调试内核代码的时候,你可以用printk完成这个任务。Printk在前些章中,我们简单假设printk工作起来和printf很类似。现在是介绍一下它们之间不同的时候了。其中一个不同点就是,printk允许你根据它们的严重程度,通过附加不同的“记录级”来对消息分类,或赋予消息优先级。你可以用宏来指示记 阅读全文
posted @ 2010-08-18 17:56 郭—大—侠 阅读(649) 评论(0) 推荐(0)
摘要:本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。本文是该系列文章的第一篇,它介绍了内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink,并结合给出的例子程序详细地说明了它们如何使用。一、引言一般地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核和应用之间以及在应用与应用之间进行数据交换需要专门的机制来实现,众所 阅读全文
posted @ 2010-08-18 16:55 郭—大—侠 阅读(858) 评论(0) 推荐(0)
摘要:共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就 阅读全文
posted @ 2010-08-17 15:29 郭—大—侠 阅读(1690) 评论(0) 推荐(0)
摘要:这次在工作上分别遇到过strcpy、memset、memcpy,也在网络上看到过一些关于三者区别的文章,罗列大概内容如下:strcpy()来自C语言,在C++里得以保留。首先,要指明的是,C++里strcpy()里接受的参数是C-串,并非string,更不可能是其他类型的数据。它表示一个字串的内容拷贝到另一个字串。拷贝会在源字串里第一个'/0'时停止拷贝.strcpy(目标字串,源字串);ex:char*temp1,*temp2="test";strcpy(temp1,temp2);memset()主要用于对一个内存区域初始化。一般用在字符数组上,至少我现在 阅读全文
posted @ 2010-08-13 16:20 郭—大—侠 阅读(395) 评论(0) 推荐(0)
摘要:9.4.使用 I/O 内存尽管 I/O 端口在 x86 世界中流行, 用来和设备通讯的主要机制是通过内存映射的寄存器和设备内存. 2 者都称为 I/O 内存, 因为寄存器和内存之间的区别对软件是透明的.I/O 内存是简单的一个象 RAM 的区域, 它被处理器用来跨过总线存取设备. 这个内存可用作几个目的, 例如持有视频数据或者以太网报文, 同时实现设备寄存器就象 I/O 端口一样的行为(即, 它们有读和写它们相关联的边际效果).存取 I/O 内存的方式依赖计算机体系, 总线, 和使用的设备, 尽管外设到处都一样. 本章的讨论主要触及 ISA 和 PCI 内存, 而也试图传递通用的信息. 尽管存 阅读全文
posted @ 2010-08-13 15:24 郭—大—侠 阅读(318) 评论(0) 推荐(0)
摘要:PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画 阅读全文
posted @ 2010-08-13 14:11 郭—大—侠 阅读(189) 评论(0) 推荐(0)
摘要:1、外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“I/O端口”,而IO端口有两种编址方式:独立编址和统一编制。而具体采用哪一种则取决于CPU的体系结构。 如,PowerPC、m68k等采用统一编址,而X86等则采用独立编址。但对于Linux内核而言,它可能用于不同的CPU,所以它必须都要考虑这两种方式,于是它采用一种新的方法,将基于I/O映射方式的或内存映射方式的I/O端口通称为“I/O区域”(I/O region),不论你采用哪种方式,都要先申请IO区域:request_resource(),结束时释放它:release_resource()。对于某一既定的系统,它要么是独立编址 阅读全文
posted @ 2010-08-13 14:07 郭—大—侠 阅读(329) 评论(0) 推荐(0)
摘要:最近喜欢上微软雅黑的字体,看着蛮舒服的,就把ubuntu的也改成这种字体了,嘿嘿!!支持在Ubuntu8.10、Ubuntu9.04系统上自动安装微软雅黑、monaco-linux、lucida-console等字体。而且可以设置LED、CRT两种不同的显示器的渲染效果,无需手工配置,实现自动化安装。使用方法如下:打开命令控制器,然后运行下面的脚本(可以通过粘贴复制实现):wget -O get-fonts.sh.zip http://files.cnblogs.com/DengYangjun/get-fonts.sh.zipunzip -o get-fonts.sh.zip 1>/de 阅读全文
posted @ 2010-08-13 14:02 郭—大—侠 阅读(349) 评论(0) 推荐(0)