dev

mount

北战南征 提交于 2020-03-08 11:23:07
[root@bogon ~]$fuser -v /mnt/sda7 --查看哪个用户连接 USER PID ACCESS COMMAND /mnt/sda7: root kernel mount /mnt/sda7 root 7531 ..c.. bash ------------这个用户在通过这个进程连接 [root@bogon ~]$fuser fuser fusermount fusermount-glusterfs [root@bogon ~]$fuser -v /boot USER PID ACCESS COMMAND /boot: root kernel mount /boot root 8493 ..c.. bash [root@bogon ~]$lsof /boot 同样判断是否有进程在访问 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 8493 root cwd DIR 8,1 4096 64 /boot [root@bogon ~]$ [root@bogon ~]$fuser -km /mnt/sda7/ --------------杀掉所有连接这个文件系统的进程,这是具有破坏性的 /mnt/sda7: 7531c [root@bogon ~]$fuser -v /mnt/sda7 USER

qt环境搭建

你说的曾经没有我的故事 提交于 2020-03-08 09:41:05
QT开发&QT应用运行用到的QT库: Linux X64平台Qt Creator开发&应用运行用到的Qt库: https://download.csdn.net/download/wanvan/10695824 ARM64平台应用运行用到的Qt库: https://download.csdn.net/download/wanvan/10695879 QT Library配置须知: 直接下载使用我上面提供的编译好的Qt库,需要正确配置才能正常使用。 可能出现的问题: 问题1:移入我编译的QT库至Ubuntu下的QT Creator中时,可能QT Creator中会提示“Qt version is not properly installed,please run make install”的问题。 该提示就是说,Qt没有被正确安装,请运行make install这个问题是比较常见的一个。 出现此问题的原因就是:qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径。如果直接拷贝过来使用,自己的路径结构与原来不同,则Qt库就不能正常使用。提示就是Qt version is not properly installed,please run make install Qt没有被正确安装,请运行make install。 既然路径信息是内嵌在qmake.exe中了

Linux 管理 LVM逻辑卷

放肆的年华 提交于 2020-03-08 07:56:08
1.为主机增加80G SCSI 接口硬盘 2.划分三个各20G的主分区 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41945087 20971520 83 Linux /dev/sdb2 41945088 83888127 20971520 83 Linux /dev/sdb3 83888128 125831167 20971520 83 Linux 3.将三个主分区转换为物理卷(pvcreate),扫描系统中的物理卷 [root@localhost ~]# pvcreate /dev/sdb[123] Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created. 4.使用两个物理卷创建卷组,名字为myvg,查看卷组大小 [root@localhost ~]# vgcreate myvg /dev/sdb[12] Volume group "myvg" successfully created 5.创建逻辑卷mylv,大小为30G [root@localhost ~]# lvcreate

Linux驱动之USB鼠标驱动编写

主宰稳场 提交于 2020-03-08 07:41:55
本篇博客分以下几部分讲解 1、介绍USB四大描述 2、介绍USB鼠标驱动程序功能及框架 3、介绍程序用到的结构体 4、介绍程序用到的函数 5、编写程序 6、测试程序 1、介绍USB四大描述符 USB设备驱动程序里定义了许多与驱动程序密切相关的描述符。这里介绍一下四种比较关键的描述符: 设备描述符 、 配置描述符 、 接口描述符 、 端点描述符 。这几个描述符都位于include\linux\usb\ch9.h中,先看一下每个描述直接的关系,从图中可以看出每一个查到USB主机上的USB设备都有一个设备描述符,设备描述符下面可以接多个配置描述符,配置描述符下面又可以接多个 当USB设备接到USB控制器上后,USB控制器第一次读取到的数据包,总共8字节 /*当USB设备接到USB控制器上后,USB控制器第一次读取到的数据包,总共8字节*/ struct usb_ctrlrequest { __u8 bRequestType; __u8 bRequest; __le16 wValue; __le16 wIndex; __le16 wLength; } __attribute__ ((packed)); 设备描述符 是在设备连接时,主机第一个读取的描述符,包含了主机需要从设备读取的基本信息。设备描述符有14个字段,如下所示。依照功能来分,设备描述符的字段包含了描述符本身、设备

高通 android平台LCD驱动分析

社会主义新天地 提交于 2020-03-08 07:39:42
目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(),从而生成/dev/fbx的设备节点。这里最重要的数据结构是fb_ops,它包括fb打开、参数设置、画图、配置、内存映射等操作函数,芯片厂家通常提供了这部分的源码,因为这些操作一般是跟芯片内部的DMP和MIPI DSI等部件打交道。 当开发一款新的LCD驱动时往往需要关注的是LCD最底层的驱动,即是LCD屏的初始化、亮屏、熄屏以及背光操作。个人觉得以下几个问题有必要弄清楚(参考Qualcomm芯片上的驱动代码): 1、如何添加一款新屏驱动 下面以东芝屏为例(参照源代码mipi_toshiba_video_wvga_pt.c mipi_toshiba.c) 模块初始化:module_init(mipi_video_toshiba_wvga_pt_init); 在mipi_video_toshiba_wvga_pt_init()中主要工作是设置LCD屏的参数,然后注册一个名为mipi_toshiba的平台驱动和平台设备。在注册平台设备时将LCD亮屏、熄屏以及背光操作添加到平台设备中。在mipi_toshiba的平台驱动中利用probe函数调用msm_fb_add_device()

Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

限于喜欢 提交于 2020-03-08 07:39:27
---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1、 初始化 Framebuffer : FrameBuffer驱动是以模块的形式注册到系统中,在模块初始化时,创建FrameBuffer对应的设备文件及proc文件,并注册FrameBuffer设备操作接口函数fb_fops。 static int __init fbmem_init(void) { proc_create("fb", 0, NULL, &fb_proc_fops);///向 proc 文件系统报告驱动状态和参数 if (register_chrdev(FB_MAJOR,"fb",&fb_fops))///注册字符设备驱动,主设备号是29 printk("unable to get major %d for fb devs\n", FB_MAJOR); fb_class = class_create(THIS_MODULE, "graphics");///创建 /sys/class/graphics 设备类,配合 mdev生成设备文件 if (IS_ERR(fb_class)) { printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class)); fb

Halcon算子翻译——dev_set_check

ε祈祈猫儿з 提交于 2020-03-08 06:56:10
名称 dev_set_check - 指定HDevelop中的错误处理方式。 用法 dev_set_check( : : Mode : ) 描述   dev_set_check指定在发生错误时HDevelop如何应对,即如果算子的返回状态不是H_MSG_TRUE(2)。   如果Mode的值是'give_error'---这是系统默认值---则一个错误的算子调用会抛出一个异常,这个异常在HDevelop程序中可以被catch语句捕获到。 但是,如果在HDevelop程序中没有周围的try-catch块,而且程序在HDevelop中运行,则程序在错误的算子处停止运行,并且打开错误消息框以显示错误文本。 另外,相应的调用的算子被输入到“算子窗口”中,使得用户可以容易地编辑并且可能修正错误的算子调用的参数。 如果该程序是从HDevEngine调用的,并且该异常未在HDevelop程序中捕获,则会抛出一个HDevEngineException对象,并退出该程序。   如果Mode设置为'〜give_error',则错误将被忽略,程序继续运行下一个算子。 dev_set_check('〜give_error')旨在与dev_error_var一起使用,dev_error_var可以检查算子调用返回的结果状态。 注意   使用HDevelop的代码导出功能

Halcon算子翻译——dev_error_var

旧巷老猫 提交于 2020-03-08 06:55:34
名称 dev_error_var - 定义或取消定义一个错误变量。 用法 dev_error_var( : : ErrorVar, Mode : ) 描述   dev_error_var定义一个错误变量,它是最后一个算子调用结果状态的变量。 如果没有发生错误,ErrorVar将会是2(H_MSG_TRUE)。 参数Mode指定是否应使用错误变量(1)或不使用(0)。 如果错误变量处于激活状态,每次算子运行完毕后都会更新。 因此,一次算子调用的结果变量在下一次算子的调用之前有效。 该值可以通过将其分配给另一个变量(参见示例)或通过调用dev_error_var(ErrorVar,0)来保存。 参数 ErrorVar (input_control)   integer → (integer)   包含错误状态的变量的名称。 默认值: 'ErrorVar' Mode (input_control)    integer → (integer)   开启或关闭错误变量。 默认值: 1 列举值: 0, 1 示例(HDevelop) dev_close_window () dev_open_window (0, 0, 512, 512, 'black', WindowHandle) dev_error_var (Error, 1) dev_set_check ('~give_error')

platform设备驱动

ε祈祈猫儿з 提交于 2020-03-08 06:51:59
kernel/arch/unicore/mach-sep0611/io.c: map_desc 数组描述了开始有内核自动建立的虚拟空间到物理地址空间的映射(静态映射) kernel/arch/unicore/mach-sep0611/devices.c: 描述了板级支持包,描述了各种资源的物理空间,以及各种platform_device实例的部分内容取值 kernel/arch/unicore/mach-sep0611/mach-tiger-test.c: static struct platform_device *devices[] __initdata写明了支持platform架构的设备驱动 以globalfifo作为支持platform设备的驱动程序为例: 在kernel/arch/unicore/mach-sep0611/mach-tiger-test.c添加 static struct platform_device globalfifo_device = { .name = "globalfifo", .id = -1, }; 在kernel/arch/unicore/mach-sep0611/mach-tiger-test.c的platform_device *数组devices中添加 &globalfifo_device, 驱动程序: #include

Linux Platform Device and Driver

两盒软妹~` 提交于 2020-03-08 06:49:02
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性(这些标准接口是安全的)。 Platform机制的本身使用并不复杂,由两部分组成:platform_device和platfrom_driver。 通过Platform机制开发发底层驱动的大致流程为: 定义 platform_device à 注册 platform_device à 定义 platform_driver à注册 platform_driver。 首先要确认的就是设备的资源信息,例如设备的地址,中断号等。 在2.6内核中platform设备用结构体platform_device来描述,该结构体定义在kernel/include