Linux
文章平均质量分 84
木木0o0欧尼
这个作者很懒,什么都没留下…
展开
-
Linux内核中的数据结构与算法(三)哈希链表
四,哈希链表谈到链表就不得不谈Linux内核中另外一个重要的结构,哈希链表。讨论这个结构前,你需要对哈希的最基本的概念要清楚哦,由于我们已经讲过Linux内核中的普通链表的结构,这里我们对比他们的区别来了解哈希链表会直观一些。Linux链表认为双指针表头双循环链表对于HASH表来说过于浪费,因而设计了一套用于HASH表的hlist的数据结构,单指针表头双循环链表。hlish表头仅有一个指向首节点的指针,而没有指向尾节点的指针,这样在海量的HASH表中存储的表头就能减少一半的空间消耗。定义和初始化原创 2021-03-11 15:20:55 · 502 阅读 · 0 评论 -
Linux内核中的数据结构与算法(二)
四,基本链表在讲链表前我想多说几句,链表基本上是所有语言所有行业的程序员都会在日常生活中频繁接触的数据结构了,所以在笔试的环节中我们会发现有大量的知识点是考察链表的使用,我希望看了此文章的人能够了解Linux内核中的链表的使用方法,我认为你有链表的编程经验。1.单向链表单向链表我们都知道是如下一种结构的东西,Head指针指向第一个成为表头节点,终止于最后一个指向NULL的指针。2.双向链表双链表就是如下一种结构,与单链表不同的是双链表中每个节点存在prev,next两种指针,分别原创 2021-03-11 15:19:46 · 162 阅读 · 0 评论 -
Linux内核中的数据结构与算法(一)
一,序言其实想写这个系列很久了,因为本人工作的关系,平时接触Linux内核很多,从业后很多时候在网上查找的东西是片面或者不系统的,打算给自己的知识库进行个整理吧,打算开笔写这个系列,再加上自己想考研了,算是重新学习,也算巩固自己的知识吧。如果有什么错误和疏漏,也请看客们给出批评意见,比心比心比心~~~❤️❤️❤️二,概述本系列文章主要介绍Linux中涉及的数据结构和算法,其实这远比你想象的多得多呢,没有Linux内核研究经验的小伙伴们也不用担心,懂C语言就行了,文章中使用内核C语言呈现数据结构和原创 2021-03-11 15:18:20 · 240 阅读 · 0 评论 -
linux串口编程
<br />Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。<br />串口简介<br />串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准原创 2010-07-03 13:09:00 · 700 阅读 · 0 评论 -
linux串口数据传输出现问题的几点总结
<br />(一)很多时候当在使用串口的时候你会发现在read串口设备时会出现当机现象,出现这种现象的原因可能是你在open设备的时候没有使用非阻塞的方式打开,在使用串口发送数据和接收数据的时候,或者注意select的配合使用达到非阻塞的读取。<br />(二)在系统头文件<termios.h>中定义了终端控制结构struct termios,tcgetattr()和tcsetattr()两个系统函数获得和设置这些属性。结构struct termios中的域描述的主要属性包括: <br /><br />c_原创 2010-07-09 13:49:00 · 5551 阅读 · 0 评论 -
LINUX RTC机制实现计时器类
<br /> 更好的计时器类实现:LINUX RTC机制实现计时器类(原创)<br /> 很多时候需要在LINUX下用到定时器,但像setitimer()和alarm()这样的定时器有时会和sleep()函数发生冲突,这样就给编程带来了很大的困难。<br /> 写了一个定时器的类,使用select进行精确定时。而且可以在系统中创建不限数量的定时器,且互不干扰。类的内部采用线程实现。即线程+select。代码如下:<br />CTimer.h:<br />/*<br />* CTimer.转载 2010-07-09 13:54:00 · 1432 阅读 · 0 评论 -
stat函数
表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errno错误代码: ENOENT原创 2010-05-18 16:29:00 · 580 阅读 · 0 评论 -
本文讲述了Linux命令行修改IP、网关、DNS的方法
方式一:ifconfig eth0 192.168.1.18 netmask 255.255.255.0说明:该种方式可以使改变即时生效,重启后会恢复为原来的IP方式二:vi /etc/sysconfig/network-scripts/ifcfg-eth0说明:该方式要重启后生效,且是永久的如果要立即更改且永久生效,就只能以上两种方式同时使用了。以上是通过linux命原创 2010-05-18 17:14:00 · 1833 阅读 · 0 评论 -
linux系统启动脚本
Fedora 下是有/etc/inittab文件的,而在Ubuntu中是没有这一个文件的,因为在ubuntu中,inittab软件包已经被upstart软件包替换了,所有的配置信息都在/etc/event.d/目录下。inittab文件在inittab里面这样描述的,This inittab file describes how the INIT process should set up the转载 2010-05-20 08:33:00 · 1597 阅读 · 0 评论 -
NAND flash文件系统JFFS2和YAFFS比较
NAND flash文件系统JFFS2和YAFFS比较ARM9 2009-12-07 21:29:50 阅读98 评论0 字号:大中小 JFFS是由瑞典的Axis Communications Ab公司开发的(1999,以GNU发布),针对flash设备的特性为嵌入式设备开发的 JFFS1和JFFS2的设计中都考虑到了FLASH的特性特别是满足了上述3个条件,包括了垃圾回收,坏块管理等原创 2010-05-20 09:48:00 · 2320 阅读 · 4 评论 -
如何把自己的模块编译到内核中
<br /> 如何把一个自己写的外部驱动模块编译添加到内核中有时候还是需要把自己写的驱动模块添加到内核中去编译成一个整体,这样很容易YY,我靠,我也能在内核目录里加代码了<br /><br />首先选一个典型的例子,一个外部驱动模块,需要传入两个参数,然后通过cat /proc/result 查看他们的和<br />/*<br />test_inline_driver.c<br />这是一个例子,把模块参数val1+ val2的和通过 cat /proc/result 显示出来<br />*/<br />#原创 2010-12-06 11:03:00 · 1672 阅读 · 3 评论 -
解决Ubuntu 9.10文件不能共享的问题
<br />用vmware workstation 6.0安装了fedora 11。由于要解决屏幕分辨率和文件共享的问题,就尝试安装vmware tools。但是每次编译都有很多错误。鼠标移动是没有问题的、加载U盘之类也没问题、设置分辨率也没问题,就是hgfs文件夹下没有出现主机共享的文件夹。为此大伤脑筋。在网上游离了很久,都没有什么值得有价值的发现。 今天闲的实在没事,我又去搞着东西,哇塞,又出现新的文章了,看来总有些牛人会解决这些问题的。文章说,是因为vmware tools只支持2.6.28的内核,而原创 2010-12-07 09:35:00 · 1480 阅读 · 1 评论 -
ioctl对缓存的处理
ARP缓存表arp_tbl由协议栈在运行期间自动维护,包括邻居新建,更新,回收等。同时,TCP/IP协议栈的实现中也提供了三个命令,可以用来由用 户维护arp_tbl,这三个命令分别是SIOCDARP(删除arp_tbl中的一个邻居),SIOCSARP(设置arp_tbl中的一个邻居), SIOCGARP(获取arp_tbl中的一个邻居)。用户使用系统调用ioctl来传递这三个命令,命令参数是结构体struct arpreq,其定义如下:<br /><br /> struct arpreq {<br原创 2010-12-09 14:37:00 · 1643 阅读 · 0 评论 -
linux下对系统时间的设置
hwclock可以设置系统时间,大家可能都用过。但是我想每个人对知道此命令的途径却不完全相同。我陈述一下自己得知此命令的过程,希望能那些对linux望而却步的初学者有些帮助,linux本身公开源码,这对那些追根问底的人是个不错的选择。文中过程废话较多,假设读者是初学者,对一些过程不是很清楚。高手见谅!几天前要做几台服务器的时间同步,和同事讨论系统时间设置的问题,我模糊记得date可以设置系统时间,和他打赌可以使用(为此输了三条鱼,:( )比如:[root@TestRA te原创 2010-12-10 10:18:00 · 4172 阅读 · 1 评论 -
嵌入式web server boa 在s3c6410上的移植
<br />嵌入式web server boa 在S3C6410上的移植<br />开发平台:LINUX<br />目标平台:S3c6410<br />开发工具:arm 交叉工具链版本4.3.2 <br />boa版本:boa-0.94.13.tar.gz<br /> <br />一、下载源码,生成makefile<br /> 1.下载源码<br /> 2.解压 tar zxvf boa-0.94.13.tar.tar<br /> 3.cd boa-0.94.13/src<br /原创 2010-12-31 10:29:00 · 1658 阅读 · 0 评论 -
Ubuntu ftp 配置
<br />安装vsftpd sudo apt-get install vsftpd 2)设置 vsftpd.conf文件 注意:设置之前请备份!! sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old .1.1、监听地址与控制端口 listen_address=ip address 此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供 FTP服务。对于只有一个IP地址的主机,不需要原创 2010-11-23 11:22:00 · 765 阅读 · 0 评论 -
linux串口编程
<br />Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。<br />串口简介<br />串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准原创 2010-07-03 13:11:00 · 903 阅读 · 0 评论 -
vi命令大全
vi替换使用语法规则:: range s /pat1/pat2/g ,其中: 这是Vi的命令执行界面;range 是命令执行范围的指定: 百分号(%)表示所有行;点(.)表示当前行;美元($)表示最末行; 例如:10,20表示第10到20行,.,$ 表示当前行到最后一行,.+2,$-5 表 示当前行后两行直到全文的倒数第五行s 表示其后是一个替换命令。g 可选标志,带这个标志表示替换将针对原创 2010-04-30 11:37:00 · 687 阅读 · 0 评论 -
在ubuntu 8.10下使用kermit
一直使用minicom,很不爽,最近看到韦东山大哥的书上介绍kermit,赶紧换之……一、安装 $sudo apt-get install ckermit二、建立配置文件$cd /home/zbs (我的目录)$sudo gedit .kermrc (创建名为.kermrc的文件)在kermrc下添加如下内容:set line /dev/ttyUSB0 (我用原创 2010-04-23 09:48:00 · 1093 阅读 · 1 评论 -
patch用法
首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。 1、diff NAME diff - find differences between two files SYNOPSIS diff [options] from-file to-file 简单的说,diff原创 2010-01-14 14:39:00 · 2619 阅读 · 0 评论 -
Linux 下c/c++ 编译器
Gcc简介Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。gcc 编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.o转载 2010-01-18 10:42:00 · 3106 阅读 · 0 评论 -
sizeof和strlen
一.本质区别 sizeof和strlen有本质上的区别。sizeof是C语言的一种单目运算符,如++、--等,并不是函数,sizeof的优先级为2级,比/、% 等3级运算符优先级高,sizeof以字节的形式给出操作数的存储空间的大小。而strlen是一个函数,是由C语言的标准库提供的。strlen计算的 是字符串的长度。 二.使用区别 1.sizeof sizeof的操作数可以是数据类转载 2010-01-18 13:00:00 · 876 阅读 · 1 评论 -
gdb实用手册
GDB概述 1使用GDB GDB中运行UNIX的shell程序 在GDB中运行程序 2调试已运行的程序 两种方法: 3暂停 / 恢复程序运行 一、设置断点(BreakPoint) 二、设置观察点(WatchPoint) 三、设置捕捉点(CatchPoint) 四、维护停止点 五、停止条件维护 六、为停止点设定运行命令 七、断点菜单 八、恢复程序运转载 2010-01-18 11:23:00 · 638 阅读 · 0 评论 -
Linux 目录解释
/bin:bin是binary(二进制)的缩写。这个目录是对UNIX系统习惯的沿袭,存放着使用者最经常使用的命令。例如:cp,ls,cat。 /boot:这里存放的是启动LINUX时使用的一些核心文件。 /dev:dev是device(设备)的缩写。这个目录下是所有LINUX的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在LINUX中设备和文件是用同种方法访问的。例如:/d转载 2010-01-19 14:37:00 · 482 阅读 · 0 评论 -
在ubuntu8.10下搭建qt编译环境
我的操作系统是ubuntu8.10,可以在网上找到安装qt编译环境的安装方法。现简略叙述如下: (1)sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer 此命令安装了五个软件。 qt4-dev-tools是qt开发的一些工具包,此命令的作用即将qt4的一些头文件和库文原创 2010-01-25 19:19:00 · 652 阅读 · 1 评论 -
标准IO和文件IO的区别
作者:王珊珊 华清远见嵌入式学院讲师先来了解下什么是标准IO以及文件IO。 标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准IO库处理很多细节。例如缓存分配,以优化长度执行IO等。标准的IO提供了三种类型的缓存。 (1)全缓存:当填满标准IO缓存后才进行实际的IO操作。 (2转载 2010-02-04 09:27:00 · 1161 阅读 · 0 评论 -
gcc生成动态库静态库
gcc生成静态库和动态库一、库文件简介简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态库文件的扩展名是.a,共享库文件的扩展名是.so(在CYGWIN环境下,分别叫做.o和.dll)。共享库现在常常被叫做动态转载 2010-02-24 16:52:00 · 6041 阅读 · 3 评论 -
setsockopt函数的用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WA转载 2010-03-05 09:43:00 · 903 阅读 · 0 评论 -
中午man手册
1.使用sudo apt-get install manpages-zh下载软件包2.修改 ~/.bashrc (用命令gedit bashrc)添加一个alias : alias eman=man -M /usr/share/man3.重新打开一个终端4.使用man查看中文,eman单看英文原创 2010-03-05 15:04:00 · 533 阅读 · 0 评论 -
select函数
1. select函数: <span class="t_tag" onclick="function onclick(){tagshow(event)}">系统提供select函数来实现多路复用输入/输出模型。原型: #include #include int select(int maxfd,fd_set *rds转载 2010-03-08 11:20:00 · 415 阅读 · 0 评论 -
ubuntu下编译内核的方法
声明:本文是个人参考网上有关资料,编译2.6.25内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。 本文放在本人的blog上面:http://hi.baidu.com/ffbp89/ 本文还有姊妹篇《老笔记本编译2.6.20内核指导》 如果有修改,也在blog上。 欢迎转载本文,但是请不要取消本声明。 写这篇东西主要是教学目的,学生可以结合编译内核复习shell的有关命令。 一、下载转载 2010-03-19 11:02:00 · 912 阅读 · 0 评论 -
在ubuntu下添加硬盘分区
前言安装新硬盘这种事情并不会经常,发生同样它也并不复杂.本文将向你说明如何在现有的Ubuntu系统下安装一个新硬盘,并为它设置好分区然后使用它.在动手之前,你需要先考虑下面三个关于新硬盘使用方面的问题: 该硬盘是否只会在Ubuntu下使用? 该硬盘是否要被Ubuntu和windows两类系统使用? 你打算如何分区,是全部空间作一个个分区还是分成数个小分区? 友情提示转载 2010-04-09 11:52:00 · 6309 阅读 · 0 评论 -
ubuntu 8.10 交叉编译工具
交叉编译环境的建立(基于ubuntu 8.10)建立交叉编译工具链的主机环境:Ubuntu 8.10,gcc-4.3.2保证你的 Ubuntu 8.10 安装了如下的软件:Bison flex build-essential patch libncurses5-dev安装这些软件包:sudo apt-get install Bison flex build-es原创 2010-03-30 20:27:00 · 670 阅读 · 0 评论 -
vmware-tool的安装方法
1、启动并进入Linux系统。2、然后选择虚拟机菜单中的“虚拟机/安装VMware-Tools”,此时就会有把VMware-tools文件映像到CD-ROM中。3、把“VMwareTools-6.0.2-59824.i386.rpm,VMwareTools-6.0.2-59824.tar.gz”文件复制到自己的需要的位置中,然后选择一种安装方式。在此我选VMwareTools-6.0.2-5982转载 2010-01-14 09:36:00 · 6324 阅读 · 1 评论