自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (21)
  • 收藏
  • 关注

原创 Linux nvme驱动分析

Ioctl处理流程:static int nvme_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg){ struct nvme_ns *ns = bdev->bd_disk->private_data; switch (cmd) { cas...

2018-05-23 08:13:26 1847

转载 [转] mutex, semaphore和spinlock的区别

出处:https://blog.csdn.net/Wilsonboliu/article/details/19190861本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_...

2018-05-22 18:31:38 1176

转载 bss、data和rodata区别与联系

转自:http://blog.csdn.net/laiqun_ai/article/details/8528366有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几次这样经历,我才决定花一章篇幅来介绍它。

2016-03-10 13:20:55 503

转载 udev用法

转自:http://blog.csdn.net/coroutines/article/details/380678051. 初始化首先调用udev_new,创建一个udev library context。udev library context采用引用记数机制,创建的context默认引用记数为1,使用udev_ref和udev_unref增加或减少引用记数,如果引用记数为0,则释放内部

2016-02-22 15:07:01 1402

转载 va_start和va_end的使用及原理

va_start和va_end使用详解  本文主要介绍va_start和va_end的使用及原理。  在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。  介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的

2016-02-22 13:54:16 378

转载 windows下python监控系统服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://future.blog.51cto.com/26959/831816目的:针对Windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe程序是使用python语言编写,可在Windows下双击MonitorWin32Process

2015-11-26 19:31:20 2348

转载 udev规则

【转】跟我一起写udev规则(译)目录 介绍       关于本文档      更新历史概念     术语: devfs, sysfs, nodes, etc.     为什么?     内置固定命名设计编写规则     规则文件和语义     规则语法     基本规则     sysfs匹配属性     设备级联结构     字符

2015-11-26 11:01:12 407

转载 get_user_pages的意义

get_user_pages的意义,这个函数可以锁定用户页面,将之锁定在内存中不被换出,其实这个函数就是靠增加页面的引用计数来实现的,另外一种锁定页面的方式是调用mlock系统调用,但是后者是主动的锁定,并且在页面的基本属性上保证了不被换出,这是用户可以控制的,而前者使用引用计数的方式是用户所不能控制的,它只是有的时候内核在使用该page,由于内核使用而不能被换出,比如内核在执行aio或者bio,

2015-11-05 16:47:44 4059

转载 spin_lock与spin_lock_irqsaveq区别

个人总结:中断上下文,即由中断引发的中断处理函数的执行过程,由于不是线程,没有tast_struct记录它的状态,因此是不可重入的,所以一旦这个上下文被中断打断,无法恢复。因此如果要用spin lock,一定要使用spin_lock_irqsave的禁止中断的版本。而线程环境,由于有task_struct记录所有资源,以及执行记录,所以是可以被中断的。假如上述二者情况在同一个CPU

2015-04-18 10:19:53 678

转载 Printk代码分析

转自:http://book.51cto.com/art/200712/62871.htm总结:printk使用spin lock保护输出,因此是原子的,它还是用了一个长度为1024的临时buffer存储临时数据,然后在写入__log_buf.遇到的问题:使用BIO工具打印数据时,异步使用printk打印的大量数据会冲突,造成许多数据丢失。2.1.4  prin

2015-04-16 17:02:28 1420

转载 va_start和va_end的使用及原理

转载地址:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html   本文主要介绍va_start和va_end的使用及原理。  在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。  介绍这两个宏之前先看一下C中传递

2015-04-16 15:54:03 368

转载 docker定义

docker, based on lxc tech and is used to make portable package which can be built on one system installed docker and run on many othersystems which also installed docker.Applications run in

2015-02-09 19:02:45 391

转载 MSI及MSIX详解

转自:http://blog.163.com/fabulous_wyg/blog/static/17405078520126273199786/1. 什么是MSIMSI全称Message Signaled Interrupt。当设备向一个特殊地址写入时,会向CPU产生一个中断,即也MSI中断。MSI能力最初在PCI 2.2里定义,在PCI 3.0里被强化,使得每个中断都可以

2015-01-29 15:46:29 12528 1

原创 segment fault问题原因分析

segmengt fault类的错误本质原因就是程序访问了非法的地址:1.引用空指针2.野指针3.访问越界造成的原因有多种:主观原因:1.新申请指针忘记赋NULL,也忘记分配空间,直接使用造成非法访问。2.为指针赋值时,地址经过计算而来。计算过程有问题,导致赋值的地址不正确,比如地址经过计算涉及到类型转换之类操作,很容易因为类型转换造成截断。

2014-12-19 16:07:39 1704

原创 编程技巧

1.回调函数通过xian4.回调函数

2014-11-18 16:43:05 389

原创 C语言程序架构

1.多模块初始化注册架构一个大型软件由多个模块构成,在初始化过程中,依次调用这些模块的初始化函数,这些初始化函数将这些模块内部提供的可供调用接口集中注册到一个大的数据结构中。然后main函数才开始处理接收到的参数,根据收到参数的不同,去调用大数据结构中不同的接口函数。适用场景:适用于构造交互式程序,初始化时,所有模块都注册好,开始接受用户输入时,根据输入参数调用不同的函数接口。

2014-11-18 16:33:59 2383

原创 不定长数组取值交叉遍历组合生成算法

代码如下:#include int factor[3][4] ={    {0, 1, 2, 3},     {0, 1},     {0, 1, 2}, };int lengths[3] = {4, 2, 3}; void recurisionAccess(int factor[3][4], int lengths[4], int co

2014-10-29 17:26:54 1563

转载 ssh拒绝密码问题

转自:其实这个问题是从 SCP 过来的。用 SCP 在两台 Linux 服务器之间传送备份文件。输入完 root 密码后,总是出现 Permission denied, please try again. 错误字样。用 Passwd 命令修改目标服务器 root 密码后,问题还是一样。判断来判断去,问题依旧。在网上找到几条解决办法:1、/home 权限问题如果 /home

2014-10-15 11:32:33 3370

原创 linux socket编程(udev举例)

union sockaddr_union {        struct sockaddr sa;         struct sockaddr_in in4;        struct sockaddr_in6 in6;        struct sockaddr_un un;         struct sockaddr_nl nl;         struc

2014-08-28 09:47:10 1367

转载 debian软件包管理

转自:http://baike.sogou.com/v63691049.htmubuntu继承与debian,管理方法一致。实用命令:1.dpkg -S /bin/ls 查询文件属于哪个deb包2.dpkg -s linux-image-generic 显示已安装包的信息3.dpkg -l 列出已安装的全部deb包4.dpkg -L 列出已安装包

2014-08-06 15:13:52 1368

转载 scatterlist && DMA

DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以是系统CPU从实际的IO数据传输过程中摆脱出来,从而大大提供系统的吞吐率。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发地执行其他任务,当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,然后由CPU执行相应的中断服务程序进行后续处理。在内存中用于

2014-07-17 18:40:54 548

原创 linux内存管理

内存管理方式:分段式,分页式,

2014-07-16 17:16:24 429

原创 PCI驱动访问设备内存方式

static int nvme_dev_map(struct nvme_dev *dev){int bars, result = -ENOMEM;struct pci_dev *pdev = dev->pci_dev;if (pci_enable_device_mem(pdev))return result;dev->entry[0].vector = pd

2014-07-16 11:18:43 4502

转载 kmalloc、vmalloc、malloc的区别

转自:http://blog.csdn.net/macrossdzh/article/details/5958368

2014-07-15 16:07:19 400

转载 物理地址、虚拟地址(线性地址)、逻辑地址以及MMU的知识

一、首先不得不提的历史         许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是

2014-07-15 16:03:00 582

原创 以新插入磁盘作为grub启动盘修改方法

在一块新磁盘上安装grub,并将它作为启动磁盘的步骤:1.如果该磁盘已经有安装过grub,先修改grub启动磁盘/boot/grub/device.map中描述了grub安装的磁盘。[root@localhost ~]# cat /boot/grub/device.map# this device map was generated by anaconda(hd

2014-07-14 18:04:59 2143

原创 使用其他机器上的硬盘启动Centos5系统panic问题解决方法

Creating a New Initial RAM DiskIf you have changed a motherboard or moved a disk to a different system it may fail to boot due to the lack of appropriate drivers in the initial RAM disk image (i

2014-07-11 10:51:36 958

原创 gnuplot用法

一组数据一个图# gnuplotset terminal pngset output 'iops.png'set title "IOPS" set xlabel "time(ms)"set ylabel "iops"set xrange [5000000:35000000]set yrange [0:100000]plot 'randread_iops.log'

2014-07-08 12:01:51 510

转载 linux清空缓存方法

原文:今天用spot on light 查了一下开发服务器的内存占用,只剩下60MB用下面的方法就可以实现清空缓存频繁的文件访问会导致系统的Cache使用量大增首先使用free -m查看剩余内存[root@Oracle ~]# free -m                                     total       used       fre

2014-07-01 11:57:12 882

转载 Linux Kernel模块内存泄露的一种查找思路

Linux Kernel模块内存泄露的一种查找思路时间2014-02-14 14:12:11  CSDN博客 原文  http://blog.csdn.net/cjf_iceking/article/details/19191595一.问题描述    最近有个客户报了一个问题:如果运行我们的产品,则每天将会增长大概30M的内存,大概4个多月内存就会耗尽。和大多数程序

2014-07-01 11:55:39 553

原创 crash使用方法

1.Crash 调试vmcore:# pwd /var/crash/127.0.0.1-2014-06-23-12:37:00# crash /usr/lib/debug/lib/module/`uname -r`/vmlinux vmcorecrash> bt /* 打印函数栈 */crash> ps /* 查看系统崩溃时在运行的所有进程 */crash> set 3016

2014-07-01 11:53:12 6923

原创 linux访问windows分区或共享

linux mount windows分区[root@localhost ~]# mount -t cifs -o username=yangzy.fnst,password=Fnst.1234 ]//192.168.150.1/rpm  /mnt

2014-06-20 14:18:52 789

原创 C标准IO缓存长度限制0124

echo "..." > /proc/submiter/submiter_entryecho的字符串长度超过1024时会发生两次传递,原因是echo使用C标准IO,即以FILE *f = fopen(file_name, mode, RDONLY)方式打开文件时,C标准IO会使用bufer,但buffer的长度只有1024。使用linux系统调用的直接IO方式,in

2014-06-20 14:15:20 550

原创 git发邮件

1.发单个patchgit status 检查状态git commit 提交修改,提交了之后才能format-patchgit format-patch -1 -s vim 0001-A-test-patch.patch   add some comment git send-email 0001-A-test-patch.patch   --t

2014-06-20 14:13:43 1259

原创 使用linux命令

同步分区表命令:partprobe(8) or kpartx(8)sed命令用例:sed -i 's/import TestDevice/import TestSetting/' `find . -name "*.py"`sed -i "s|../../../../../utils|../../../../utils|" *sed  -i '/s

2014-06-20 14:09:08 448

原创 查看服务器配置信息

# service ipmi start# ipmitool -I open sdrFAN 列就是风扇的转速#demi

2014-06-20 14:07:48 530

原创 vim,sed简单命令

sed简单命令:1.删除行删除指定行sed -i '行号d' 文件名删除匹配行sed -i '/匹配内容(正则表达式)/d' 文件名2.插入行在指定行之前插入内容sed -i '行号i 插入内容' 文件名在指定行之后插入内容sed -i '行号a 插入内容' 文件名在匹配行之前插入内容sed -i '/匹配内容(正则表

2014-06-20 14:06:16 2755

原创 linux内核调试

1.使用kdump+debuginfo+crash[root@localhost 127.0.0.1-2014-06-19-03:01:35]# crash /usr/lib/debug/lib/modules/2.6.32-358.el6.x86_64/vmlinux vmcorecrash 6.1.0-1.el6Copyright (C) 2002-2012  Red Ha

2014-06-20 14:02:26 1553

原创 ubuntu软件包管理

deb文件时ubuntu以及debian管理软件的基本单位deb文件解压命令:ar -xv *.debdeb文件安装命令:apt-get install *.deb源文件:/etc/apt/source.list更新源:apt-get updatevncserver安装:apt-get install vnc4serv

2014-06-20 14:00:50 356

原创 kdump设置

1.grub配置# cat /boot/grub/grub.confkernel /vmlinuz-2.6.32-431.el6.x86_64 ... nmi_watchdog=0 crashkernel=auto2.kdump配置# cat /etc/kdump.confext4 /dev/sda5 注:当前系统所在分区path /var/crash 注:vmco

2014-06-20 13:59:29 1626

C语言函数库查询软件(有使用例子)

C语言函数库查询器,包含C语言库函数的查询功能。

2010-05-08

跳转指令的实现(组成原理课程设计)

跳转指令的实现(组成原理课程设计),用汇编指令实现微程序的设计,内含报告。

2010-05-08

进程调度时间片轮转+优先级进程调度(操作系统课程设计)

进程调度时间片轮转+优先级进程调度(操作系统课程设计),用队列数据结构,C++实现。

2010-05-08

进程调度的时间片轮转+最高相应比(操作系统课程设计)

进程调度的时间片轮转+最高相应比(操作系统课程设计),C++实现,内含课程设计报告

2010-05-08

文本编辑器(汇编语言)

文本编辑器(汇编语言),包含上下左右移动,时间显示,编辑、退格等功能键、

2010-05-08

语法分析程序(编译原理课程设计)

语法分析程序(编译原理课程设计),C++实现,功能全面,包含goto等表。

2010-05-08

汇编语言课程设计多个案例

汇编语言课程设计多个案例源码,基本包含了所有涉及的题目。

2010-05-08

哈夫曼编码(数据结构课程设计有报告)

哈夫曼编码(数据结构课程设计有报告),C++实现,功能完整,配有报告

2010-05-08

校友录系统中用户管理(基础强化训练)

校友录系统中用户管理(基础强化训练),用链表数据结构,有增、删、改功能。

2010-05-08

进程调度模拟设计(操作系统课程设计)

进程调度模拟设计(操作系统课程设计),我用C++实现的,使用队列作为数据结构。

2010-05-08

简易银行卡系统(软件工程课程设计)

软件工程课程设计,简易银行卡系统,用C++实现的,函数分层设计,遵循软件工程的原则。

2010-05-08

嵌入式 CC++语言精华文章集锦

学习嵌入式 CC++语言的经典!里面深刻介绍了C语言在嵌入式方面的应用。

2009-12-31

linux操作系统内核0.11注释版

经典学习代码!linux内核0.11注释版,是Linux早期的内核,方便大家学习内核,更全面了解Linux。

2009-12-31

Linux操作系统命令大全

Linux命令大全,系统的包含了Linux里面系统、文件、磁盘、网络管理的各种命令。

2009-12-31

C++实现哈弗曼编码

课程设计题目,C++语言,用数据结构里面哈弗曼树的原理,实现编码。

2009-12-31

C++编写的校友录管理系统

课程设计,用C++实现的校友录信息管理系统,数据结构是链表。包含添加删除等操作。

2009-12-31

C、C++编程风格培养

经典C、C++编程风格培养书籍!习惯很重要,这本书里面详细讲述了怎样养成良好的编程风格!

2009-12-31

深入理解计算机系统(英文版)

经典计算机书籍!这本书将编程通计算机系统深入的结合在一起,学计算机编程的经典英文原版的书籍。

2009-12-31

编译原理词法分析源程序

编译原理课词法分析源程序,从文件读取源程序,然后输出单词。

2009-12-02

数据结构课程设计经典题目

里面是一些很好的数据结构课程设计的题目。

2009-12-02

空空如也

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

TA关注的人

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