linux相关
文章平均质量分 58
whutyuxinghai
这个作者很懒,什么都没留下…
展开
-
segment fault问题原因分析
segmengt fault类的错误本质原因就是程序访问了非法的地址:1.引用空指针2.野指针3.访问越界造成的原因有多种:主观原因:1.新申请指针忘记赋NULL,也忘记分配空间,直接使用造成非法访问。2.为指针赋值时,地址经过计算而来。计算过程有问题,导致赋值的地址不正确,比如地址经过计算涉及到类型转换之类操作,很容易因为类型转换造成截断。原创 2014-12-19 16:07:39 · 1745 阅读 · 0 评论 -
以新插入磁盘作为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 · 2207 阅读 · 0 评论 -
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 · 807 阅读 · 0 评论 -
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 · 575 阅读 · 0 评论 -
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 · 1328 阅读 · 0 评论 -
使用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 · 460 阅读 · 0 评论 -
查看服务器配置信息
# service ipmi start# ipmitool -I open sdrFAN 列就是风扇的转速#demi原创 2014-06-20 14:07:48 · 544 阅读 · 0 评论 -
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 · 12636 阅读 · 1 评论 -
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 · 399 阅读 · 0 评论 -
get_user_pages的意义
get_user_pages的意义,这个函数可以锁定用户页面,将之锁定在内存中不被换出,其实这个函数就是靠增加页面的引用计数来实现的,另外一种锁定页面的方式是调用mlock系统调用,但是后者是主动的锁定,并且在页面的基本属性上保证了不被换出,这是用户可以控制的,而前者使用引用计数的方式是用户所不能控制的,它只是有的时候内核在使用该page,由于内核使用而不能被换出,比如内核在执行aio或者bio,转载 2015-11-05 16:47:44 · 4172 阅读 · 0 评论 -
windows下python监控系统服务
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://future.blog.51cto.com/26959/831816目的:针对Windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe程序是使用python语言编写,可在Windows下双击MonitorWin32Process转载 2015-11-26 19:31:20 · 2369 阅读 · 0 评论 -
udev规则
【转】跟我一起写udev规则(译)目录 介绍 关于本文档 更新历史概念 术语: devfs, sysfs, nodes, etc. 为什么? 内置固定命名设计编写规则 规则文件和语义 规则语法 基本规则 sysfs匹配属性 设备级联结构 字符转载 2015-11-26 11:01:12 · 418 阅读 · 0 评论 -
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 · 1450 阅读 · 0 评论 -
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 · 387 阅读 · 0 评论 -
[转] mutex, semaphore和spinlock的区别
出处:https://blog.csdn.net/Wilsonboliu/article/details/19190861本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_...转载 2018-05-22 18:31:38 · 1220 阅读 · 0 评论 -
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 · 1889 阅读 · 0 评论 -
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 · 365 阅读 · 0 评论 -
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 · 1651 阅读 · 0 评论 -
linux内存管理
内存管理方式:分段式,分页式,原创 2014-07-16 17:16:24 · 441 阅读 · 0 评论 -
linux中断处理
Linux中断内核编程转自:http://blog.csdn.net/tigerjb/article/details/6069516前言在前面分析了中断的基本原理后,就可以写一个内核中断程序来体验以下,也可以借此程序继续深入来了解内核中断的执行过程一.内核中断程序:我们还是来看一看成程序:在看程序之前,要熟悉如何进行模块编程,和了解module_pararm()转载 2013-07-08 11:05:21 · 614 阅读 · 0 评论 -
Linux内核栈信息获取与理解
转载地址:http://www.ilinuxkernel.com/files/2/Linux_kernel_stack.htmlLinux内核栈信息获取与理解1内核栈获取C语言的函数调用,是通过栈来实现的。如下图所示:函数调用栈内核异常或死机时,经常在内核日志中看到打印的栈信息和转载 2013-06-13 16:26:13 · 651 阅读 · 0 评论 -
virtio设备中断分析
1.中断两任务:1).当设备的配置信息发生改变(config changed),会产生一个中断(称为change中断),中断处理程序需要调用相应的处理函数(需要驱动定义)。2).当设备向队列中写入信息时,会产生一个中断(称为vq中断),中断处理函数需要调用相应的队列的回调函数(需要驱动定义)。2.三种中断处理方式:1).不用msix中断,则change中断和所有vq中断共用一个中断原创 2013-05-15 11:13:21 · 2099 阅读 · 0 评论 -
virtio驱动如何同设备交互
virtio设备是作为pci设备被使用的,因此具有pci设备的所有属性:virtio header占用pci设备的24字节的配置空间:32 * (0 - 5)virtio header后面跟随一个device specific的config结构virtio header包括:/* A 32-bit r/o bitmask of the features supported by t原创 2013-05-28 15:13:07 · 1307 阅读 · 0 评论 -
virtio-scsi的类,对象和实例
1.在qemu-kvm中实现一个对象需要三种结构:1).类型type 将类class和实例instance关联起来2).类class 定义这一类对象的通用操作3).实例instance 定义一个对象的数据注:类型定义中不一定非要包含完整的类Class和实例instance的定义,如果没有新增的成员,则完全可以从父类型继承过来,qemu-kvm初始化的代码会自动找到父类型并使用原创 2013-05-28 15:15:00 · 1188 阅读 · 0 评论 -
在社区内核上使用libvirt工具时为网络not active问题解决方法
在社区内核上使用libvirt工具时为网络not active问题解决方法:[root@build yuxh]# brctl addbr virbr0 192.168.122.1[root@build yuxh]# ifconfig virbr0 up[root@build yuxh]# ifconfig virbr0 192.168.122.1[root@build yuxh原创 2013-05-06 16:37:15 · 1274 阅读 · 0 评论 -
linux设备驱动模型
Bus对应kset,driver和device对应kobjectBus结构体包含2个klist,分别是driver和device的链表,driver和device中对应包含klist_node来插入链表Driver结构体中包含1个klist,是device的链表,device中对应再包含一个klist_node来插入链表 /** * bus_add_dri原创 2013-05-06 14:56:19 · 504 阅读 · 0 评论 -
vt-d
New Note 53dma工作原理dma的驱动向内核申请传输空间,然后将空间的地址和长度交给设备,设备就向这个地址空间直接传输数据dma设备向空间传输数据的时候地址有限制,1.地址空间的限制,比如设备只有32位地址总线,则他最大只支持4G以内的地址的传输。2.安全性限制,如果驱动不小心给设备指定了一个错误传输地址,那么设备将可能会覆盖掉重要数据,造成系统的严重原创 2013-06-24 10:08:39 · 1069 阅读 · 0 评论 -
scsi总线驱动的初始化
scsi总线驱动的初始化块设备底层驱动的核心是scsi总线层驱动,在总线层驱动之上为各种不同的scsi设备驱动,在总线层驱动之下为scsi host驱动。其在内核中的位置如下图所示: 前面我们已经知道了上三层的工作,接下来大部分知识来自底下三层。 在Linux中scsi驱动基本分为三大层:top level,middle level以及lower l转载 2013-07-10 14:04:07 · 825 阅读 · 0 评论 -
scatterlist && DMA
DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以是系统CPU从实际的IO数据传输过程中摆脱出来,从而大大提供系统的吞吐率。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发地执行其他任务,当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,然后由CPU执行相应的中断服务程序进行后续处理。在内存中用于转载 2014-07-17 18:40:54 · 564 阅读 · 0 评论 -
RHEL使用centos的yum源
感谢原创作者http://blog.sina.com.cn/s/blog_5d18f85f0101271b.html1、卸载自身yum# rpm -aq|grep yum|xargs rpm -e --nodeps2、安装centos的YUMrpm -ivh http://mirrors.163.com/centos/6.2/os/i386/Packages/python-转载 2014-05-18 11:12:05 · 449 阅读 · 0 评论 -
device mapper驱动
dm(device mapper)驱动实际做的一件事就是将多个设备映射成一个块设备显示在上层,LVM和multipath等工具都是基于这个驱动,将多个设备虚拟成一个设备的。dm驱动位于linux/driver/md/目录下由dm.c dm-target.c dm-tabel.c dm-ioctl.c dm-io.c等几个文件组成框架。因为它对上层显示的是一个虚拟的块设备,所以会原创 2013-05-06 14:55:10 · 1966 阅读 · 0 评论 -
completion和wait_for_event的区别
mutex和completion是一种同步机制,用于在两个进程之间其同步作用:A进程调用wait_for_completion(&data->prev_finished); 等待其他进程对data->prev_finished执行complete操作。B进程调用complete(&next->prev_finished); 通知等待在next->prev_finished上的进程可原创 2013-08-14 10:58:23 · 1264 阅读 · 0 评论 -
scsi eh处理流程
内核文档Documentation/scsi/scsi_eh.txtscsi_eh_scmd_add()在两处被调用1).scsi_times_out函数 => scmd超时处理函数2).scsi_softirp_done函数 => scmd命令结果处理函数scsi_eh_scmd_add()完成以下工作: 1. Turns on scmd->eh_efla翻译 2013-05-06 15:06:00 · 5239 阅读 · 0 评论 -
irq-proc的初始化流程
static int __ref kernel_init(void *unused){ kernel_init_freeable(); /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); free_initmem(); mark_roda原创 2013-08-05 20:02:54 · 817 阅读 · 0 评论 -
LIBSAS层分析
1.LLDD -> SAS传输层 -> SCSI层1).LLDD实例化一个scsi host,然后在系统中声明存在,以后发给该LLDD的I/O就经过scsi host,scsi host又调用LLDD在实例化scsi host时指定的传输层的函数实现I/O。因此所有需要实例化scsi host的LLDD需要提供一个struct scsi_transport_template的结构体变量原创 2013-07-30 14:49:39 · 2846 阅读 · 2 评论 -
《Linux设备驱动程序》第八章 分配内存读书笔记
《Linux设备驱动程序》第八章 分配内存读书笔记kmalloc函数的内幕不对所获取的内存空间清零分配的区域在物理内存中也是连续的flags参数GFP_KERNEL在空闲内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的GFP_ATOMIC用于在中断处理例程或其他运行于进程上下文之外的代码中分配内存,不会休眠GFP_USE转载 2013-07-15 13:34:45 · 602 阅读 · 0 评论 -
virtio-blk原理
virtio-blk原理:1.处理数据请求有两条路径1).request路径:virtblk_requestvirtio_blk结构体中的gendisk结构的request_queue队列接收block层的bio请求,按照request_queue队列默认处理过程,bio请求会在io调度层转化为request,然后进入request_queue队列,最后调用virtblk_reques原创 2013-05-16 14:59:49 · 2639 阅读 · 0 评论