- 博客(49)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注

原创 关于使用qemu-nvme创建OC SSD设备pblk,以及lightnvm子系统介绍
目录 欢迎一起研究pblk的小伙伴入群,qq群:8514352251:下载qemu-nvme源码,配置安装2:制作qemu系统3:启动系统4:进入系统加载pblk驱动,初始化nvme设备,创建/删除pblk设备a:编辑pblk驱动模块,安装b:查看nvme设备信息c:创建pblk设备d:删除一个pblk设备5:数据规则a:部分数据读取规则:b:磨...
2018-12-04 15:17:10
4191
翻译 raid5-ppl 翻译
Partial Parity LogPartial Parity Log (PPL) is a feature available for RAID5 arrays. The issue addressed by PPL is that after a dirty shutdown, parity of a particular stripe may become inconsistent w...
2018-08-10 09:47:34
667
原创 raid5-ppl基本概念以及数据流程
目录一:简单介绍... 11.1 write hole问题... 11.2恢复原理... 11.3数据逻辑... 21.4 如何使用... 2二:核心数据结构... 32.1 ppl_header和ppl_header_entry. 32.2 ppl_conf和ppl_log以及ppl_io_unit. 4三:PPL写入逻辑以及数据分布... 73.1申请条...
2018-08-10 09:44:47
3452
原创 DRBD数据处理基本框架分析
前言:本文档以单主模式进行数据流分析,双主模式就是从机也升级为主机可以进行数据读写操作,单主模式下,数据只能从一端也就是升级为primary的那一端进行读写操作,partner端是不能进行任何操作的,不能进行格式化,更不能挂载查看primary同步过来的数据,只有把这一端升级为primary之后才可以进行常规的挂载查看文件、读写文件操作。第一部分:加载驱动、创建资源、启动服务配置内核将
2017-10-23 09:44:11
807
转载 如何在Visual Studio项目中正确添加汇编代码 .
引用注明>> 【作者:张佩】【镜像:www.yiiyee.cn/blog】1. 问题描述在以往的编程经历中,本人最常使用的汇编代码是__asm {int 3}。它可以在我的代码中插入一个软件断点。如果没有一个连接到当前程序的调试器,则程序将停止在这行语句处无法继续执行。上面的这种方式称为高级语言和汇编语言混编。当我用得正爽的时候,迎头碰到了64位平台这员猛将。它大
2014-08-11 17:59:04
3351
转载 nf_conntrack: table full, dropping packet. 终结篇
“连接跟踪表已满,开始丢包”!相信不少用iptables的同学都会见过这个错误信息吧,这个问题曾经也困扰过我好长一段时间。此问题的解决办法有四种(nf_conntrack 在CentOS 5 / kernel 一、关闭防火墙。 简单粗暴,直接有效1234chkconfig iptables off chkconfi
2014-07-01 10:27:02
1256
转载 Linux 下 去掉终端显示的当前目录的绝对路径
Linux 下 去掉终端显示的当前目录的绝对路径 路径中需要加上当前目录export PATH=$PATH:.如果想一劳永逸,可以在 ~/ 目录中编辑 .bash_profile 增加上面一行;如果仅仅临时使用可以在文件名前加上当前目录 ./a.out去~/.bashrc中,找到PS1变量的定义,如果没有,手动加上:可以将显示输出到标
2014-06-28 12:05:42
1070
转载 什么是UART中的FIFO ?
FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可节省CPU时间。对于发送数据也一样,可以把要发送的数据一起写入FIFO,串口控制器可按写入顺序依次发送出去。 fifo只是一个缓冲器而已如果你的cpu没什么别的工作或完全处理的过来uart数据的话,可以用nonfifo模式如果你的cpu有一些耗时的工作要处理,也许ua
2014-06-27 23:28:06
9719
3
转载 Linux内核链表的研究与应用
Author:tiger-johnTime:2012-12-20Mail:jibo.tiger@gmail.comBlog:http://blog.youkuaiyun.com/tigerjb/article/details/8299599转载请注明出处。前言:在Linux内核中使用了大量的链表来组织其数据,其采用了双向链表作为其基本的数据结构。但是与我们传
2014-06-09 08:55:31
708
转载 浅析 Linux 中的时间编程和实现原理,第 1 部分: Linux 应用层的时间编程
http://www.ibm.com/developerworks/cn/linux/1307_liuming_linuxtime1/
2014-05-05 12:40:10
565
转载 线程不安全函数 .
这几天调bug,该bug的特点是随机出现,而且不可重现!找了一天之后,终于发现,是因为在多线程函数中用了线程不安全的strtok函数导致的。从网上搜了些资料,多线程环境小心多线程不安全函数:strtok、asctime、ctime、gmtime and soo改成线程安全的函数strtok_r即可。strtok不是一个线程安全的函数,多线程下应该用strtr
2014-05-04 16:48:32
2089
转载 一种沾包的处理方法
A粘包处理可以这样做:修改数据包,在数据包的头部增加“包长度”的信息,接收数据的时候首先接收头部,根据得到的长度,在接受这个长度的数据,得到的就不会是粘包的数据。 B 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其 标准的Socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(Transport Control Pr
2014-04-23 11:35:57
1036
转载 Android 开发之 ---- 底层驱动开发(一)
驱动概述 说到 android 驱动是离不开 Linux 驱动的。Android 内核采用的是 Linux2.6 内核 (最近Linux 3.3 已经包含了一些 Android 代码)。但 Android 并没有完全照搬 Linux 系统内核,除了对Linux 进行部分修正,还增加了不少内容。android 驱动 主要分两种类型:Android 专用驱动 和 Android
2014-04-10 10:57:01
1146
转载 linux设备:cdev和kobj_map
原文地址:linux设备:cdev和kobj_map 作者:zengxg14这只是看代码时的记录,完后会统一整理,希望会这样吧。Linux kernel v3.6.7先看kobj_map相关的代码涉及到的文件typedef struct kobject *kobj_probe_t(dev_t, int *, void *);struct
2014-03-27 15:26:48
3430
转载 裸设备、字符设备、块设备不全面比较
A.为什么Oracle要使用裸设备呢裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。 2.如
2014-03-27 14:16:06
2544
原创 linux at24cxxx驱动编写【全地址范围】
最近的项目里面用到了IIC芯片存储,由于数据量比较多,所以使用了大点容量的EEPROM芯片,型号为AT24C512,中发买的6元一片,直插的。贴片会便宜一半。之前考虑使用AT24C256,驱动都写了,但是方案有改动,发现容量不够使用了,而且看芯片手册发现256与512的通信协议并不完全相同。AT系列从02-256的都是一字节地址+一字节数据,所以如果驱动只是指定了msg[0].addr =
2014-03-20 11:43:52
3744
原创 qt里面通过buffer给timeedit控件赋值
使用QList来压缩代码空间,buf里面的值是从底层EEPROM里读取出来的,分别将时分秒放到了三个buf中,然后通过settime来给每个timeedit赋值,通过QTime函数将时分秒三个参数传递进去。或者通过使用spinbox来实现也可以。 /*------------------------读取起始时间--------------------------*/ timeEd
2014-03-19 16:00:56
1945
原创 给ubuntu9.10安装中文输入法和系统汉化
sudo apt-get install scim-pinyin,后直接ctrl+space就ok了,或者选择system->preferrence->ibuspreferences,进行偏好设置。还可以通过sudo apt-get install scim-tables-zh 来安装五笔输入法。这样也只能使用一种输入法而已,但好多软件打开来看还是乱码,这样就需要设置系统语言环境了,需要下
2014-03-19 11:37:41
1203
原创 给QTcreater添加帮助文档
第一步:点击tools->options;第二步:选择help->documentation;第三步:点击add,从你安装的的qt库文件里面选择doc->qch;第四步:将里面所有的都添加进去;第五步:使用;
2014-03-19 09:43:51
1474
原创 开发板以网络文件系统启动的一些问题
环境: jz2440ubuntu9.10最近重新做了ubuntu系统,复制之前的代码就出现了新的问题以网络文件系统启动提示:Unable to get nfsd port number from server, using default通常的问题就是nfs配置出了问题:当然要保证bootargs参数配置无误。首先进入u-boot界面进行ping测试,如果显
2014-03-18 16:51:56
955
转载 linux设备驱动之 i2c设备驱动 at24c08驱动程序分析【全部地址的操作】
linux-2.6.22源码分析\linux-2.6.22\drivers\i2c\chips\eeprom.c为例,分析i2c设备驱动程序的原理1.从驱动的入口函数开始分析 eeprom_init >i2c_add_driver(&eeprom_driver) >i2c_register_driver(THIS_MODULE, driver)
2014-03-06 15:05:18
2230
原创 给IIC芯片AT24CXXX编写驱动的过程中出现的一些不稳定的问题总结
最近在做arm+linux上的IIC芯片EEPROM驱动,实验过程中出现了一些问题,具体的有:1.VCC引脚手册上提供的最大运行操作电压6.25V,为了方便焊接于是我接上了5V的电压,但是实际在驱动的安装卸载【我是用的是insmod,模块化加载的方式】过程中会出现不稳定现象,有时候能够注册上有时候则不可以。 解决办法:给VCC引脚提供3.3V电压,不要使用过高或者过低的电压来操作。2
2014-03-06 14:25:55
1561
原创 linux内核设计与实现【第三版】摘记----第三章:进程管理
进程:现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存。【在线程之间可以共享虚拟内存,但却都各自拥有虚拟处理器】进程:是处于执行期的程序以及相关的资源的综合。多个进程可能运行的是同一段程序,比如一个电灯的程序,可以通过创建线程来实现重复的电灯操作。使用exec()这组函数可以在fork之后创建新的地址空间,并把程序载入其中。fork实际上是由clone系统调用实现。使
2014-03-02 13:10:26
700
原创 linux内核设计与实现【第三版】摘记----第二章:从内核出发
GNU Clinux内核使用C语言编写的,但并不完全符合ANSI C标准,它涵盖了ISO C99标准和GNU C扩展特性。实际上使用更多的是gcc编译器,他是多种GNU编译器的集合,包含的C编译器既可以编译内核,也可以编译linux系统上用C语言编写的代码。内联函数:C99和GNU C都支持内联函数,这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复-压栈出栈)。内联汇编:
2014-03-02 12:52:05
834
原创 linux内核设计与实现【第三版】摘记----第一章:linux内核简介
linux内核与传统unix内核比较:UNIX内核几乎毫无例外的都是一个不可分割的静态可执行库,也就是说,它们必须以巨大、单独的可执行块的形式在一个单独的地址空间执行。UNIX内核通常需要硬件系统提供的页机制MMU来管理内存。单内核与微内核设计的比较:linux是一个单内核,但他汲取了微内核精华:模块化设计、抢占式内核、支持内核线程,以及支持动态加载模块。linux对线程支持的实现
2014-03-02 12:31:36
855
DRBD基本数据读写数据处理IO流,需要使用XMIND软件打开
2017-10-23
arm上的qt鼠标与触摸屏共存情况下,使用触摸屏控制qt界面,指针会飘?
2013-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人