博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
逍遥游
逍遥乎山川之阿 放旷乎人间之世
thinkfree.cublog.cn
管理博客
发表文章
留言
收藏夹
· Blogs
· Emacs
· GIS
· IDL
· linux
· Python
· Scheme
博客圈
音乐
相册
文章
· IT News
· linux App
· linux Dev
· C/C++
· Kernel
· Emacs
· Network
· Python
· IDL可视化
· SICP notes
· Web相关
首页
关于作者
姓名:panix 职业:student 年龄:24 位置:Hefei,Anhui 个性介绍:think freely
||
<<
>>
||
我的分类
文章列表 - linux Dev
A Crash Course in UNIX TCP/IP Socket Programming
<p><b><font face="Arial" size="4">A Crash Course in UNIX TCP/IP Socket Programming</font></b></p> <font size="2"><p>John Selbie</p> <p>CEN 4500</p> <p>Spring 1997</p> <p> </p> <b><p>Introduction</p> </b><p>A "socket" is a loose term used to describe "an end point for communication." The traditional Berkley Socket API is a set of C function calls used to support network communication. The Sockets API is not specific to TCP/IP. Therefore, developing TCP/IP network applications requires slightly more overhead of programming and understanding to account for the generic parameters of the library's function calls. Once understood, Socket programming is as easy as reading and writing to disk files.</p> <p> </p> <p>The material presented here is somewhat specific to C, UNIX, and TCP/IP. However the general format for the Socket API has been ported to such languages as Java and Perl. In addition some UNIX vendors support other protocols such as IPX, SNA, and DEC-NET ……
查看全文
发表于:2007-11-30 ┆
阅读(159)
┆
评论(0)
图解 Linux 内存管理 -- 线性空间与物理内存
<img dragover="true" src="http://p.blog.csdn.net/images/p_blog_csdn_net/rstevens/mm1.JPG" alt=""><br> <br> <br> <br><p class="MsoNormal"><span style="font-family: 宋体;" lang="ZH-CN">上图反映了如下信息:</span><span style="" lang="FR"><o:p></o:p></span></p><p class="MsoNormal"><span style="" lang="FR"><o:p> </o:p></span></p><p style="margin-left: 36pt; text-indent: -18pt;" class="MsoNormal"><!--[if !supportLists]--><span style="" lang="FR"><span style="">1、<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"> </span></span></span><!--[endif]--><span style="font-family: 宋体;" lang="ZH-CN">进程的</span><span style="" lang="FR">4G </span><span style="font-family: 宋体;" lang="ZH-CN">线性空间被划分成三个部分:进程空间(</span><span style="" lang="FR">0-3G</span><span style="font-family: 宋体;" lang="ZH-CN">)、内核直接映射空间(</……
查看全文
发表于:2007-09-13 ┆
阅读(555)
┆
评论(0)
关于linux中的库
<h2>soname</h2>形式一般为lib<name>.so.<version>,以symbol link的方式存在于文件系统中,version的不同反映了接口的改变,其指向的实际文件的名字通常是在soname后加上.<minor number>.<release number>。<h2>ldd/ldconfig</h2>一个程序/shared库一般都要依 赖其他的一些库,这可以用ldd来查看,它列出了依赖的库的soname,因为实际依赖是库的接口,而soname正是反映了库的接口信息。linux使 用ELF作为可执行程序和库的格式,这些依赖的库的soname保存在ELF的某个fileld里。 当一个可执行程序执行时,ld.so负责把它所依赖的shared库加载到内存并链接,它按照以下顺序寻找shared库:<ul><li>在LD_LIBRARY_PATH环境变量指定的目录下</li><li>ld.so.cache文件该shared库对应的文件</li><li>/usr/lib和/lib目录下</li></ul><p>ldconfig 建立或更新soname,并把其对应关系写入缓存文件ld.so.cache以加快加载速度,ld.so将主要使用这个ld.so.cache来寻找库文 件,所以当拷贝shared库到一个不是/usr/lib和/lib的目录后,要运行ldconfig更新ld.so.cache以使ld.so能找到这 个shared库。ldconfig能够建立和更新soname是因为ELF文件有一个field保存了……
查看全文
发表于:2007-08-11 ┆
阅读(316)
┆
评论(0)
选择图形界面库的烦恼
<br> 在linux平台上的开发工具可说是百花齐放,可也同时造成各自为政割据一方的痛苦。图形界面开发更是如此,常用的就有gtk+, qt, wxWidgets, Tk, etc.且其中没有哪种能占据统治地位,成为事实上的标准。这对程序员来说是个很大的负担,毕竟全部精通是不可能的。<br> 1 gtk+:<br> 基于LGPL协议,属于GNU所有,没有版权问题,常用于商业软件开发和嵌入式系统的开发。提供C语言的接 <br> 口,其对应的C++语言包装为gtkmm<br><br>gtk+ example:<br><br>helloword.c<br><br> <table style="border-collapse: collapse;" bgcolor="#f1f1f1" border="1" bordercolor="#999999" cellpadding="0" cellspacing="0" width="95%"><tbody><tr><td><p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">#</span><span style="color: rgb(255, 0, 0);">include</span> <span style="color: rgb(0, 0, 204);"><</span>gtk<span style="color: rgb(0, 0, 204);">/</span>gtk<span style="color: rgb(0, 0, 204);">.</span>h<span style="color: rgb(0, 0, 204);">></s……
查看全文
发表于:2007-08-02 ┆
阅读(554)
┆
评论(1)
总结编译linux内核的步骤
<p>很多朋友一听到说编译内核,就觉得很高深莫测,非常头大。其实,通常其它操作系统的内核编译是比较繁琐的。然而,由于Debian强大的dpkg软 件包管理系统,使得内核的升级、编译也变得容易很多。如果下面的步骤都注意并执行了,编译内核不是很复杂的事情,我在基于debian的ubuntu系统 上第一次编译就成功了。编译过程如下,与各位分享:</p><h1 id="toc-1">修改ubuntu 6.10上的/bin/sh</h1> <p>在ubuntu6.10上,/bin/sh默认是链接到/bin/dash的,当你从源代码编译软件的时候,dash可能会导致一些错误,至少我遇到过 类似问题,因此,我把/bin/sh的连接改为了/bin/bash。(估计中国绝大部分使用者都是用的bash吧)<br> 如果你使用的就是6.10,那么应该这样做:</p> <table style="border: 1px solid rgb(153, 153, 153); width: 80%; font-size: 12px;" align="center"><tbody><tr><td>$ rm -f /bin/sh<br>$ ln -s /bin/bash /bin/sh</td></tr></tbody></table><p></p> <h1 id="toc-2">安装相关的软件,包括</h1> <p>a、Ubuntu Dapper Drake 6.06 LTS 首选“软件”,自己想办法安装吧<br> b、build-essential,里面有gcc,make等东西要用到。<br> c. kernel-pac……
查看全文
发表于:2007-07-31 ┆
阅读(352)
┆
评论(0)
[转载]Framebuffer驱动程序模型
<br><p><strong>Framebuffer驱动程序模型</strong><br> 下图会向你展示目前的framebuffer设备驱动的结构,最常用的是非标准驱动。很明显他所处的层次最高,程序编写是最容易的。理解了这个图的,你已经很轻松的去完成一个fb驱动,比如给sa1100,s2410,s2440系列的ARM的LCD控制器写驱动。<br><a set="yes" linkindex="18" href="http://www.dzkf.cn/upimg/allimg/0704/1_29132619.JPG" target="_blank"><img alt="" src="http://www.dzkf.cn/upimg/allimg/0704/1_29132619.JPG" border="0" height="378" width="538"></a> </p> <strong>Color Map 剖析<br></strong>在framebuffer驱动程序设计中,cmap这个东东太晕了。现在我要把他赤裸裸的剖析给大家:)<br><font color="#993300">1. struct fb_cmap</font><br><a set="yes" linkindex="19" href="http://www.dzkf.cn/upimg/allimg/0704/1_29132846.JPG" target="_blank"><img alt="" src="http://www.dzkf.cn/upimg/allimg/0704/1_29132846.JPG" border="0" height="199" width="578"></a><br><br><br> <table style="border-collapse: collapse;" bgcolor="#f1f1f1" border="1" bordercolor="#99999……
查看全文
发表于:2007-07-17 ┆
阅读(658)
┆
评论(0)
[转载] 帧缓冲设备的内部数据结构(internals.txt)
<p><strong>帧缓冲设备的内部数据结构(internals.txt)</strong><br>Geert Uytterhoeven <<a href="mailto:geert@linux-m68k.org">geert@linux-m68k.org</a>>, 21 July 1998<br>翻译:<a href="mailto:good02xaut@hotmail.com">good02xaut@hotmail.com</a></p> <p> ××××帧缓冲设备中用到的结构体××××<br>以下数据结构在帧缓冲设备使用,定义<linux/fb.h>。 </p> <p>1. Outside the kernel (user space)</p> <ul><li>struct fb_fix_screeninfo<br> 帧缓冲设备中设备无关的常值数据信息。可以通过Ioctl的FBIOGET_FSCREENINFO获取。</li><li>struct fb_var_screeninfo<br> 帧缓冲设备中设备无关的变量数据信息和特定的显示模式。可以通过iotcl的FBIOGET_VSCREENINFO获取,并通过ioctl的FBIOPUT_VSCREENINFO设定。还有FBIOPAN_DISPLAY可以用。</li><li>struct fb_cmap<br> 设备无关的颜色表信息。你可以通过ioctl的FBIOGETCMAP 和 FBIOPUTCMAP读取或设定。</li></ul> <p>2. Inside the kernel</p> <ul><li>stru……
查看全文
发表于:2007-07-17 ┆
阅读(394)
┆
评论(0)
[转载]帧缓冲设备(framebuffer.txt译文)
<p><strong>帧缓冲设备(framebuffer.txt译文)</strong><br>维护: Geert Uytterhoeven <<a href="mailto:geert@linux-m68k.org">geert@linux-m68k.org</a>><br>最后校正: May 10, 2001<br>翻译:<a href="mailto:good02xaut@hotmail.com">good02xaut@hotmail.com</a></p> <p>0.介绍<br>帧缓冲设备提供了显卡的抽象描述。他同时代表了显卡上的显存,应用程序通过定义好的接口可以访问显卡,而不需要知道底层的任何操作。该设备使用特殊的设备节点,通常位于/dev目录,如/dev/fb*.</p> <p><font color="#993300">1.用户角度的/dev/fb*</font><br>从用户的角度看,帧缓冲设备和其他位于/dev下面的设备类似。他是一个字符设备,通常主设备号是29,次设备号定义帧缓冲的个数。<br>通常,使用如下方式(前面的数字代码次设备号)</p> <p> 0 = /dev/fb0 First frame buffer<br> 1 = /dev/fb1 Second frame buffer<br> ...<br> 31 = /dev/fb31 ……
查看全文
发表于:2007-07-17 ┆
阅读(375)
┆
评论(0)
[转载]通过内核源码看函数调用之前世今生
<div style="line-height: 130%;" align="center"><strong>栈(Stack):一个有序的积累或堆积<br> 韦氏词典</strong></div> <div style="line-height: 130%;" align="left"> 对每一位孜孜不倦的程序员来说,栈已深深的烙在其脑海中,甚至已经发生变异。栈可以用来传递函数参数、存储局部变量、以及存储返回值的信息、还可以用于保存寄存器的值以供恢复之用。<br> 在X86平台上(又称之为IA32),应用程序借用栈来支持函数(又称为过程)调用,变量的存储按后进先出(LIFO)的方式进行。</div> <br><strong>一、栈帧布局</strong><br> 在具体讲解函数调用之前,我们先来明确栈的几个概念:满栈与空栈,升序栈与降序栈。<br> 满栈是指栈指针指向上次写的最后一个数据单元,而空栈的栈指针指向第一个空闲单元。一个降序栈是在内存中反向增长(就是从应用程序空间结束处开始反向增长),而升序栈在内存……
查看全文
发表于:2007-07-17 ┆
阅读(267)
┆
评论(0)
[转载]Linux下FrameBuffer直接写屏
因为Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,故Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。<br><br> 在继续下面的之前,先说明几个背景知识: <ol><li>FrameBuffer主要是根据VESA标准的实现的,所以只能实现最简单的功能。 </li><li>由于涉及内核的问题,FrameBuffer是不允许在系统起来后修改显示模式等一系列操作。(好象很多人都想要这样干,这是不被允许的,当然如果你自己与驱动的话,是可以实现的) </li><li>对FrameBuffer的操作,会直接影响到本机的所有控制台的输出,包括XWIN的图形界面。 </li></ol> <p>好,现在可以让我们开始实现直接写屏:</p> <ol><li>打开一个FrameBuffer设备 </li><li>通过mmap调用把显卡的物理内存空间映射到用户空间 </li><li>直接写内存。 </li></ol> <p>好象很简单哦~<br>fbtools.h</p><br><table style="border-collapse: collapse;" bgcolor="#f1f1f1" border="1" bordercolor="#999999" cellpadding="0" cellspacing="0" width="95%"><tbody><tr><td><p style="margin: 5px; line-height: 150%;"……
查看全文
发表于:2007-07-17 ┆
阅读(302)
┆
评论(0)