摘要: p> 古人云∶“工欲善其事,必先利其器。” 这句话,我想凡是用Delphi的朋友,应该都有很深切的体会吧。的确,如果Delphi没有了控件的支持,那么人气度一定会大大的降低,不会有现在这样多的Fan了,俺也就改行用BCB或VC了,呵呵。 但是,现在控件满天飞,不要说DSP(Delphi Super Page)了,光一个深度历险上面的控件就已经洋洋洒洒上万数了,而且每天还在更新,多恐怖啊∶)然而,选择多了以后,烦恼也就随之而来了(呵呵,如果MM也能有那么多让我挑就好了),因为无法一个个的都去试过,所以有许多的优秀控件还不是为人所知,因此我就写下了这篇文章,希望能为大家当个向导,起到一个抛砖 阅读全文
posted @ 2010-08-29 17:49 郭—大—侠 阅读(295) 评论(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 郭—大—侠 阅读(790) 评论(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 郭—大—侠 阅读(167) 评论(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 郭—大—侠 阅读(758) 评论(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 郭—大—侠 阅读(3585) 评论(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 郭—大—侠 阅读(544) 评论(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 郭—大—侠 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 本章内容分为三节。第一节讲述了 mmap 系统调用的实现,mmap允许直接将设备内存映射到用户进程的地址空间中。然后我们讨论内核 kiobuf 机制,它能提供从内核空间对用户内存的直接访问,kiobuf 系统可用于为某些种类的设备实现"裸(raw)I/O"。最后一节讲述直接内存访问(DMA)I/O操作,它本质上提供了外围设备直接访问系统内存的能力。当然,所有的这些技术都需要先了解 Linux 的内存管理是如何工作的,所以我们从内存子系统来开始本章的讨论。13.1 Linux 的内存管理这一节不是描述操作系统中内存管理的理论,而是关注于该理论在 Linux 实现中的主要特点。 阅读全文
posted @ 2010-08-19 09:24 郭—大—侠 阅读(696) 评论(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 郭—大—侠 阅读(1180) 评论(0) 推荐(0) 编辑
摘要: 用户空间存取内核空间,具体的实现方法要从两个方面考虑,先是用户进程,需要调用mmap来将自己的一段虚拟空间映射到内核态分配的物理内存;然后内核空间需要重新设置用户进程的这段虚拟内存的页表,使它的物理地址指向对应的物理内存。针对linux内核的几种不同的内存分配方式(kmalloc、vmalloc和ioremap),需要进行不同的处理。关于这个话题,前面已有文章论述了,<<Linxu设备驱动程序>>也专门用一章的内容来讲述,它们所用的方法是完全一样的。这里只是重复说一遍,以温故而知新。一、Linux内存管理概述这里说一下我的理解,主要从数据结构说。1、物理内存都是按顺序分 阅读全文
posted @ 2010-08-18 20:04 郭—大—侠 阅读(244) 评论(0) 推荐(0) 编辑