Blog

一遍用了千遍,千遍只为一遍

字符串问题

前言 最近碰到一个字符串的问题,将问题记录下来。 问题背景 写了段代码,主要是实现,从一个文件中读取一个raw_value:000076083这样的字符串出来,然后根据index,表示要提取哪三位当做给一个int类型的变量final_val。比如index = 0,那么final_val = 0;index = 1,那么final_val = 76;;index = 2,那么final...

udev简单应用

udev1.0

总结 这篇先大概对udev的应用有个大概的,简单的了解,具体的一些分析或者其他更深入的一些其他用法,以后有空可以再分析 简介 udev是Linux(linux2.6内核之后)默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的uevent来管理 /dev目录下的设备文件。通过udev编写对应规则,实现设备节点变化时做出规定的动作。例如下面要介绍的热插拔实验。 ...

linux USB学习(四)

configfs用户层实现gadget驱动

简介 这篇文章主要介绍如何通过configfs在应用层实现用户空间的gadget驱动 U盘配置过程 内核打开configfs以及usb存储设备相关选项 CONFIG_CONFIGFS_FS : 为用户空间提供访问配置内核驱动的configfs文件系统 CONFIG_USB_LIBCOMPOSITE:提供usb gadget composite框架 CONFIG_USB_...

Linux性能问题排查方向

总结 参考B站UP主的思路,如果在Linux下碰到比较复杂的性能问题,可以按照下面的四步方法去定位问题。 先用top命令查看Linux系统总体的CPU使用情况 如果有异常,用pidstat -u查看细粒度的各个进程的CPU使用情况,否则转向下一步 用vmstat命令查看Linux系统总体的内存使用情况 如果有异常,用smem查看细粒...

linux USB学习(三)

一些基本的概念

简介 这里主要介绍USB一些会涉及到的基本概念,后续会慢慢的补充跟完善。 USB主控制器种类 种类 对应的USB的协议和支持的速率 创立者 功能划分 常用于 OHCI USB 1.1=Low Speed和Full Speed Compaq,M...

linux USB学习(二)

usb_device_id结构体

简介 这篇主要是讲下usb_driver结构体中的id_table成员,也就是usb_device_id结构体,以及结合具体的cdc-ncm驱动的一些分析。 usb_device_id 在Linux内核中,使用usb_driver结构体描述一个USB设备驱动,在编写新的USB设备驱动时,主要应该完成的工作是probe()和disconnect()函数,即探测和断开函数,它们分别在设备被...

bond简单实现

简介 bond功能用于多网卡的设备,也可以用于有线和无线网络同时接入一个网络的情况,主要就是将两张网卡当成一张网卡来使用,可以起到带宽加倍的作用,也可以起到安全冗余的作用,一个网卡挂了的话另一个网卡还能继续完成所有的工作。 过程 总的步骤如下 内核选项打开bond相关选项并编译 编译ifenslave工具 升级内核,并加载bonding驱动 ifenslave绑定网...

crontab命令

概述 主要记录crontab命令的使用方法,包括什么是crontab命令,怎么使用,crontab命令的语法,以及简单的介绍其他相关的内容 什么是crontab crontab 命令用于设置周期性被执行的指令。通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。 crontab语法 cro...

网络知识小记

不定时更新

前言 不定时更新,跟网络相关的一些小知识 之前在另外一篇文章也有介绍过其他的网络工具小知识,两篇可以结合一起看看 修改主机名字 主机名字是什么,比如这样 这样 临时修改 host 新主机名字 永久修改 vim /etc/hostname #直接输入你的新主机名字即可 子网掩码 明确两个...

tcpdump编译以及交叉编译

通用脚本一次性搞定

前言 有时候会遇到用tcpdump工具来抓包分析,大多数时候需要交叉编译,而交叉编译总是离不开libcap跟tcpdump,记得之前自己下载源码编译半天还是失败,后来用buildroot相当的方便。不过今天文章里面想分享的方法,是通过一个编译脚本即可解决所有的烦恼,你可以交叉编译,又可以根据你自己当前机器的架构来。 准备 安装flex 与 bison Flex 和 Bison ...