自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于shell脚本中双括号的问题

这段时间在写shell脚本,很疑惑的是,网上对shell变量的运算

2014-10-14 10:04:32 3433

转载 tee命令

功能说明:读取标准输入的数据,并将其内容输出成文件。语  法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。参  数: -a或--append  附加到既有文件的后面,而非覆盖它. -i-i或--ignore-interrupts  忽略中断信号。 

2014-10-14 09:56:50 940

转载 linux awk命令详解(转载)

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr

2014-09-04 10:47:01 469

转载 no symbol version for xxx

最近在加载驱动时遇到这个问题,在网上搜了下,guzhuanzaizi

2014-09-03 15:48:00 1249

转载 Linux设备模型 (4)

转载:http://www.cnblogs.com/wwang/archive/2010/12/27/1916024.html《Linux设备模型 (2)》和《Linux设备模型 (3)》主要通过一些简单的实作介绍了kobject、kset、kobj_type、attribute等数据结构的用法,但这些实作并没有涉及到实际环境下的设备模型和sysfs。本文将以/sys下的module子

2014-09-02 15:11:36 478

转载 Linux设备模型 (3)

转载:http://www.cnblogs.com/wwang/archive/2010/12/21/1912380.html在上文中,我们介绍到如何使用default attribute。Default attribute使用很方便,但不够灵活。比如上篇文章在Kobject一节中提到的那个例子,name和val这两个attribute使用同一个show/store函数来访问,如果attr

2014-09-02 13:59:01 379

转载 Linux设备模型 (2)

转载:上一篇文章《Linux设备模型 (1)》主要介绍了Linux设备模型在用户空间的接口sysfs,用户通过这个接口可以一览内核设备的全貌。本文将从Linux内核的角度来看一看这个设备模型是如何构建的。在Linux内核里,kobject是组成Linux设备模型的基础,一个kobject对应sysfs里的一个目录。从面向对象的角度来说,kobject可以看作是所有设备对象的基类,因

2014-09-02 13:58:22 3614

转载 Linux设备模型 (1)(转载)

随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核版本是2.6.29。我们可以很明显的看到,在Linux内核中驱动程序的比例已经非常高

2014-09-02 13:56:01 380

转载 makefile(感觉不错,转载了)

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。            于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。           后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比

2014-09-01 11:25:38 402

转载 DMA相关

unsigned long virt_to_bus(volatile void *address);void *bus_to_virt(unsigned long address);在使用IOMMU或反弹缓冲区的情况下,上述函数一般不会正常工作。而且,这两个函数并不建议使用。需要说明的是设备不一定能在所有的内存地址上执行DMA操作,在这种情况下应该通过下列函数执行DMA地址掩

2014-08-28 16:17:18 402

转载 scatterlist分析 (DMA)

使用scatterlist的原因就是系统在运行的时候内存会产生很多碎片,比如4k,100k的,1M的,有时候对应磁盘碎片,总之就是碎片。而在网络和磁盘操作中很多时候需要传送大块的数据,尤其是使用DMA的时候,因为DMA操作的物理地址必须是连续的。假设要1M内存,此时可以分配一个整的1M内存, 也可以把10个10K的和9个100K的组成一块1M的内存,当然这19个块可能是不连续的,也可能其中某些或全

2014-08-28 15:31:49 2159

原创 memset与memcpy

void *memset(void *s, int ch, size_t n);将s中前n个字节 (typedef unsigned int size_t n)用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

2014-08-19 14:55:21 623

转载 open-iscsi源码分析-list-head分析(五)

list-head结构在linux内核中用得非常多,这是一个双向链表结构,可以灵活嵌入其他数据结构中,对于建立链表非常方便。在Linux内核中,由于很多数据结构都需要连成一个链表进行管理,所以有了list-head将链表的管理独立出来,所以在内核编程不需要自己实现list-head的一些管理函数,可以直接调用。  在open-iscsi用户态编程时,将这个文件从内核中拷贝出来了:

2014-08-18 15:28:49 444

转载 open-iscsi源码分析-会话建立(六)

前面可以看出,处理控制中心还是iscsid守护进程,其他进程都是向它发出服务请求,然后它做出响应,而它完成一些操作又是向底层驱动发出指令。在前面的源码中可以发现,重要是一个mgmt_ipc_functions的函数指针数组是一个操作函数集合,其中的函数分别处理不同的服务,服务id就是它在函数指针数组中的索引。/*不同任务id对应的处理函数地址*/static mgmt_ipc_fn_t

2014-08-18 15:28:35 1436

转载 open-iscsi源码分析-进程通信(四)

前面分析了open-iscsi主要有一个守护进程iscsid,即通过本地socket和用户其他进程通信,比如iscsiadm管理执行任务时,需要和iscsid通信,iscsi的底层驱动则通过netlink和iscsid通信,而用户态其他进程还通过共享内存和iscsid日志守护进程通信。所以在iscsi服务启动后,我们会发现在系统中有两个名为iscsid的进程,其中一个为日志守护进程,另一个

2014-08-18 15:28:15 873

转载 open-iscsi源码分析-iscsid(一)

最近用到open-iscsi作用initiator,遇到很多问题,就打算粗率对open-iscsi的源码进行一个分析。    open-iscsi的组成和用法就不讲了,源码包中的README说得非常清楚,主要分为驱动和用户态两部分,用户态又分为服务守护进程和管理程序,必须先加载驱动,守护进程才能启动成功,最后才是运行iscsiadm进行一些常规管理。    今天首先对open-is

2014-08-18 15:27:04 1039

转载 open-iscsi源码分析-日志处理(二)

在iscsid主函数中有:  log_pid = log_init(program_name, DEFAULT_AREA_SIZE, daemonize ? log_do_log_daemon : log_do_log_std, NULL);   初始化日志系统,现在进入log_init函数,对open-iscsi的日志处理方式进行详细分析:       /*

2014-08-18 15:26:01 680

转载 open-iscsi源码分析-流程详细分析(三)

在iscsid.c文件的main函数中,有:sysfs_init();这个函数主要是获取系统sys目录://获取sys目录int sysfs_init(void){const char *env;/*从环境变量中获取sys路径*/env = getenv("SYSFS_PATH");if (env) {strlcpy(sysfs_path

2014-08-18 15:23:50 1410

转载 linux中创建scst iscsi-scst

从官方 http://scst.sourceforge.net/downloads.html下载scst  iscsiscst 注意要版本一致,我下载的都是2.2.0版本(1)解压下载的两个包,我是解压到用户目录下的my文件夹。如下,对isci-scst也同样操作。建议这一步在普通用户下操作,这样方便可以在图形界面中直接进去目录查看。建议解压后先看一下readme及iscsi-sc

2014-08-18 14:37:33 700

转载 modprobe XXX not found 解决与Depmod命令; insmod/modprobe的区别

modprobe XXX not found 解决:把模块文件放到 /lib/module/`uname -r`/kernel/ 目录下运行 depmod再 modprobe  就好了  modprobe 和 depmod 的使用modprobe和insmod类似,是用来动态加载模块的但区别在于,使用insmod必须再模块所在文件下加载模块,而m

2014-08-18 14:23:17 1495

转载 IP网络存储iSCSI之一iSCS的概念、组成及工作原理

一、iscsi的概念(zhua)iscsi,即internet SCSI,是IETF制订的一项标准,用于将SCSI数据块映射为以太网数据包。iscsi技术最初由cisco和ibm两家公司开发,并且得到了广大IP存储技术爱好者的大力支持,这几年得到迅速的发展壮大。iscsi的优势主要表现为:首先,iscsi没用tcp/ip协议,而tcp/ip是在网络方面最通用、最成熟的协议,且ip网

2014-08-18 14:00:21 2767

转载 mdadm

★mdadm简介我们可以使用man mdadm命令来查看mdadm的帮助信息:[root@localhost mdadm-2.6.2]# man mdadm☆mdadm用法 基本语法:mdadm [mode] [options] 目前支持:LINEAR, RAID0(striping), RAID1(mirroring), RAID4,

2014-08-18 13:52:15 816

转载 iscsi服务端(target)与客户端(initiator)

iSCSI 是一种 SAN的设备而 SAN的设备主要是提供 Server 存储体的空间.相较于传统的 SAN 是以光纤为传输媒体而 iSCSI(Internet SCSI)他是 IP-based 的数据存储的设备.使得他能更容易应用在企业中. 1.一般的网卡就能当作 iSCSI Target 但是缺点就是会消耗太多的 CPU 资源,针对这样的问题所以发展出另外两种的 iSCSI Target 网卡

2014-08-14 15:41:17 4120

转载 fdisk命令详解

fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段  我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了;通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称;比如上面的例子,我们会看到两个设备一个是/dev/hda ,另一个是/dev/sda ;  fdisk 操作硬盘的命令格式如下:  [root@localhost beinan

2014-08-14 11:12:11 2915

转载 静态常量与非静态常量的关系(static const 与const)

什么叫常量?一般来说就是不会变的量静态与非静态:  静态:对于该类的对象来说,都只有一个,叫类变量  非静态:每个该类的对象都各有一个,叫成员变量.因为是常量,不会变的,所有的对象都是一样的,所以就只需要一个就够了.工商银行卡类:他们有一个静态的银行卡名称叫:工商银行卡-->静态每个卡又月自己的卡号-->非静态.在创建对象的时候,需要每个成员变量(非静态)开

2014-08-12 14:03:23 753

转载 static与const

对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合集.下面分

2014-08-12 10:12:05 5053

转载 Sizeof与Strlen的区别与联系(转)

Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如:

2014-08-11 16:39:21 317

转载 const 常类型

什么是const?编辑  常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2为什么引入const?编辑  const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3主要作用编辑  (1)可以定义const常量,具有不可变性。  

2014-08-11 14:55:21 400

转载 QVector

QVector类是一个提供动态数组的模板类。QVector是Qt普通容器类的一种。它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。QList、QLinkedList和QVarLengthArray也提供了相似的功能,它们使用方法如下:l QList一般用得最多,它能满足我们绝大部分需求。像prepend()和insert()这样的操作通常比QVector要快些

2014-08-11 11:25:43 776

转载 QTimer

QTimer类提供了定时器信号和单触发定时器。它在内部使用定时器事件来提供更通用的定时器。QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。注意当QTimer的父对象被销毁时,它也会被自动销毁。QTimer *timer = new QTimer( myObj

2014-08-11 11:13:39 487

转载 [Qt笔记]QDir的用法

类QDir提供了对目录结构和它们的内容的访问方式。QDir用来操作路径名,访问关于路径和文件的信息,操作基础的文件系统,还可以用来访问Qt的资源系统。       Qt使用"/"来作为通用的目录分隔符,这一点和在URLs中的路径分割符的用法一致。如果你使用"/"作为文件分隔符,Qt会自动地转换你的路径来匹配你的基础的操作系统。       绝对路径的用法:QDir("/

2014-08-04 09:51:18 2688

转载 构建多线程的服务器

感觉此文章不错,所以是转载的,

2014-07-30 10:55:20 436

转载 Qt 多线程学习

最近的项目上用到了关于多线程的知识,自己也比较感兴趣,所以就拿了那本《C++ GUI Qt4 编程》来学习。    这本书的第14章是关于多线程的知识,使用的Qt版本是Qt4.x。在下用的是最新的Qt 5.2,所以代码上有一些不兼容,稍加修改就可以运行了。     Qt的多线程简单来说就是继承QThread类,重载run()函数,start()启动线程。首先来看下书上的

2014-07-29 17:13:49 369

pkcs#11 标准中文文档

关于pkcs#11标准库接口的中文文档,很详细,对于初学者要使用pkcs#11标准接口来说,非常有用。

2014-07-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除