早期的USB只支持单一的gadget设备,使用场景较为简单,随后加入了composite framework,用来支持多个function的gadget设备,多个function的绑定在内核中完成,若需要修改...Linux3.11版本引入了基于configfs的usb gadget configfs。...usb gadget configfs重新实现了复合设备层,使用者可以在用户空间配置和组合内核的function,灵活的构成USB复合设备,极大了提高了工作效率。.../configs/c.1时,内核会调用USB gadget configfs的config_usb_cfg_link函数。...4.总结 本节以uac2为例,介绍了USB gadget configfs用户空间的使用方法及内核中的工作流程。
在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。所有这三种方法都在 CentOS 6&7 机器上通过测试。那么让我们一一讨论这三种方法。.../user 现在在默认的位置上无法再找到驱动程序了,因此当 USB 存储器连接到系统上时也就无法加载到驱动程序了,从而导致磁盘不可用。...但是这个方法有一个小问题,那就是当系统内核更新的时候,usb-storage 模块会再次出现在它的默认位置。...这个问题使得这个方法不是那么理想,但是对于非特权用户来说,这个方法效果很好。...请尝试用这些方法来禁用 USB 存储,如果您遇到任何问题或有什么疑问,请告知我们。
2.Gadget Function驱动 Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication...usb_function_register和usb_function_unregister函数完成usb_function_driver结构体的注册和注销。...Gadget Configfs Configfs是一种基于ram的文件系统,可以在用户空间直接控制内核对象,主要适用于内核对象有众多配置的模块,比如USB复合设备。...这些函数内部会调用具体的USB设备控制器的UDC驱动。RK3399平台上,就会调用dwc3实现的UDC驱动。至于具体内容,后面章节在分析dwc3的UDC驱动时会详细说明。...udc_list链表上。
开始以为只要简单的调用注销接口就能轻松完成,但是实际实践的发现并非如此。因此,分享一下整个实现过程以及中间遇到的一些坑。...借鉴Spring Cloud 在实现之初,先参考了Spring Cloud Consul在关闭程序时候实现的注销方法。 ?...来注销实例。...但是,在测试后发现该方法只能剔除同一个agent上的非PASSING实例。...我们可以在Github中找到这个维持了一年多的问题讨论:https://github.com/hashicorp/consul/issues/1188 整个讨论过程非常曲折,虽然当前该问题还依然在open
在 Linux 系统中,用户登录和注销是使用 Shell(命令行解释器)来完成的。本文将介绍如何在 Linux 系统中进行用户登录和注销的详细过程,并给出相应的示例。...一、用户登录 用户登录是指使用有效的用户名和密码来访问 Linux 系统的过程。在 Linux 系统中,有多种方法可以进行用户登录,最常见的方法是使用终端或 SSH 连接。...二、用户注销 用户注销是指用户结束当前会话并退出系统的过程。在 Linux 系统中,有多种方法可以进行用户注销,最常见的方法是使用 Shell 提供的 exit 命令。...以下是在 Linux 系统中进行用户注销的步骤: 打开终端或通过 SSH 连接到 Linux 服务器。 使用 exit 命令退出系统。...三、附加说明 在 Linux 系统中,还有一些与用户登录和注销相关的命令和文件,这些命令和文件的作用如下: whoami 命令:用于显示当前登录的用户名。
1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.11 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 在linux系统中, 我们接触最多的莫过于用户空间的任务...,像用户线程或用户进程,因为他们太活跃了,也太耀眼了以至于我们感受不到内核线程的存在,但是内核线程却在背后默默地付出着,如内存回收,脏页回写,处理大量的软中断等,如果没有内核线程那么linux世界是那么的可怕...4.内核线程并没有什么特别神秘的地方,他和普通的用户任务一样参与系统调度,也可以被迁移到任何cpu上运行。...5.每个cpu都有自己的idle进程,实质上也是内核线程,但是他们比较特殊,一来是被静态创建,二来他们的优先级最低,cpu上没有其他进程运行的时候idle进程才运行。...上面已经讲解完了,内核线程是如何被创建的,又是如何执行处理函数的,涉及到多个任务直接同步问题,看代码的时候需要多个窗口配合之看才行。
(外部)内存碎片是一个历史悠久的 Linux 内核编程问题,随着系统的运行,页面被分配给各种任务,随着时间的推移内存会逐步碎片化,最终正常运行时间较长的繁忙系统可能只有很少的物理页面是连续的。...由于 Linux 内核支持虚拟内存管理,物理内存碎片通常不是问题,因为在页表的帮助下,物理上分散的内存在虚拟地址空间仍然是连续的 (除非使用大页),但对于需要从内核线性映射区分配连续物理内存的需求来说就会变的非常困难...如果内核编程不再依赖线性地址空间的高阶物理内存分配,那么内存碎片问题就从根本上解决了,但对于 Linux kernel 这样庞大的工程来说,这样的修改显然是不可能的,所以从 Linux 2.x 版本至今...反碎片简史 在开始正题前,先为大家汇总了部分 Linux 内核开发史上为改善高阶内存分配而做出的所有努力。这里的每一篇文章都非常值得细细的读一读,期望这个表格能为对反碎片细节感兴趣的读者带来便利。...Linux 在经典算法的基础上做了一些个扩展: 分区的伙伴分配器; Per-CPU pageset; 根据迁移类型进行分组; 我们以前介绍过 Linux 内核使用 node, zone, page 来描述物理内存
由于usbdrd3_0设备树节点是根节点的子节点,且有compatible属性,因此内核会自动将其转换为platform_device,然后和对应的驱动进行匹配,而其子节点usbdrd_dwc3_0内核则不会处理...,实质上是通过system_unbound_wq工作队列执行。...主要工作是注册extcon的通知回调函数、给USB PHY上电及创建调试属性文件组。...// RK3399的USB3.0的PHY为Type-C PHY,除了在dwc3_core_init()中上电,还需要在 // 这里上电,以防止USB设备连接到DWC3...USB控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug
注销注册的中断处理程序。 2.2.3.端点0描述符 端点0的端点描述符定义在dwc3的设备控制器驱动中,Function驱动无需定义,具体如下。..._gadget_ep_alloc_request分配USB请求,实质上分配的是dwc3_request数据结构,内部包含了通用的USB请求数据结构usb_request。...usb_gadget_connect调用后,设备会将D+上拉,主机识别D+上拉后开始枚举设备。...将DWC3_DCTL寄存器第31位设置为1时,USB设备控制器开始运行,会将D+上拉,主机识别D+上拉后开始枚举设备。...参考资料 Rockchip RK3399TRM V1.3 Part1 Rockchip RK3399TRM V1.3 Part2 Linux内核4.4.179版本源码 USB开发大全(第四版)
有时候,linux内核文档对我们很重要,我们可以在linux系统中安装,并及时查看: 参考链接:https://askubuntu.com/questions/841043/where-is-the-kernel-documentation...Professor Google told me it was in the source code so I did apt install linux-source but I can't find...The package name is linux-doc, after you apt install linux-doc look in /usr/share/doc/linux-doc....In general anything that would be called "kernel" in RH/CentOS land will be called "linux" in Ubuntu...保持更新,转载请注明出处;更多内容请关注 cnblogs.com/xuyaowen; # 补充 对于解压后的大多都是 .gz 文件;可以使用 zcat; vim 直接查看;也可以使用 gunzip解压成
如果误操作了/boot目录下kernel文件,会导致无法进入系统,此时,必须要借助第三方系统来进行kernel的修复。 以下以 Ubuntu 16.04系统为例,介绍修复的方法。...1、 使用Universal USB Installer制作Ubuntu的USB启动盘,重启进入Live模式 2、 使用mount命令查看系统分区挂载的路径 3、 进入挂载目录 cd /media/ubuntu...sys等目录 mount --bind /dev dev mount --bind /proc proc mount --bind /sys sys 5、 使用chroot将当前目录变为根目录(这样,之后的操作...,都是针对待修复系统的分区) chroot . 6、修复kernel apt update apt install linux-image-generic 可以看到,新的kernel已经被安装到boot
https://blog.csdn.net/u014688145/article/details/50608829 备注:本文通过三个问题,引出Linux 内核0.11的系统调用。...回答这个问题前,请先参看如下图: ? 由图可以看出,从操作系统的角度来看,一台计算机主要分为两级:用户级以及内核级,系统调用主要作用就是连接用户级和内核级的“插座”。...上层用户的许多对计算机硬件的操作,如读写磁盘文件,让显示器输出字符等,都通过接口来完成。那再思考一个问题,不用接口直接操作计算机不可以嘛?答案当然是可以,可是这样带来的后果是什么?...对底层的操作,如果不通过系统调用限制,会发生用户应用程序修改系统内核等误操作,造成操作系统运行瞬间奔溃,考虑到系统的稳定性、安全性等问题,我们需要向上提供接口,限制应用层连入内核的权限。...因此,自然而然的一个想法就是,通过对与内核模块代码段,数据段和对用户区的代码数据段做区分来阻止用户直接访问内核模块。Linux内核通过建立段级保护机制来完成上述区分核心与用户态区域的功能。
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。...由于这个参数导致的问题,高版本内核已经去掉了这个参数。...但在某个版本之后Linux内核仅仅用这个tcp_retries2来计算超时时间,在这段时间的重传次数纯粹由RTO等环境因素决定,重传超时时间在5/15下的表现为: tcp_retries2 对端无响应...echo 5 > /proc/sys/net/ipv4/tcp_retries2 但是针对这种现象,最好要做资源上的隔离,例如线程上的隔离或者机器级的隔离。 ?...当然了我大Java用纯IO事件触发编写代码也不会有问题,就是对心智负担太高-_-! 物理机突然宕机和进程宕不一样 值得注意的是,物理机宕机和进程宕但内核还存在表现完全不一样。 ?
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。...由于这个参数导致的问题,高版本内核已经去掉了这个参数。...但在某个版本之后Linux内核仅仅用这个tcp_retries2来计算超时时间,在这段时间的重传次数纯粹由RTO等环境因素决定,重传超时时间在5/15下的表现为: tcp_retries2 对端无响应...echo 5 > /proc/sys/net/ipv4/tcp_retries2 但是针对这种现象,最好要做资源上的隔离,例如线程上的隔离或者机器级的隔离。...当然了我大Java用纯IO事件触发编写代码也不会有问题,就是对心智负担太高-_-! 物理机突然宕机和进程宕不一样 值得注意的是,物理机宕机和进程宕但内核还存在表现完全不一样。
1.概述 在usb gadget configfs引入到内核之前,内核都使用硬编码的方式实现复合设备,无法在用户空间动态修改和绑定不同的function驱动,若要修改,则需要修改内核代码,重新编码,非常不方便...g_audio驱动使用module_usb_composite_driver宏注册到内核中,初始化函数为usb_composite_probe,卸载函数为usb_composite_unregister...(audio_driver); // 注册audio_driver [include/linux/usb/composite.h] #define module_usb_composite_driver...[include/linux/device.h] #define module_driver(__driver, __register, __unregister, ...) \ static int...USB gadget configfs不需要在内核中预先定义好复合设备,使用者在用户空间配置,内核会自动生成所需的复合设备,并和对应的function驱动绑定。
一、什么是ftrace ftrace(FunctionTracer)是Linux内核的一个跟踪框架,它从2008年10月9日发布的内核版本2.6.27开始并入Linux内核主线[1]。...官方文档[2]中的描述大致翻译如下: ftrace是一个内部跟踪程序,旨在帮助系统的开发人员和设计人员弄清楚内核内部发生的情况。它可以用于调试或分析在用户空间之外发生的延迟和性能问题。...由于不同版本的Linux内核机制差异较大,笔者在多个不同版本的CentOS和Ubuntu环境中进行了测试。如果您在实践过程中遇到了其它环境适配的问题,不妨在评论区留言补充。...虽然不设置它们也可以正常构建得到.ko文件,但这可能产生一些预期之外的问题(例如,一个不定义/不设置module_exit函数的内核模块,可能无法被正常卸载)。...实际上,上面的代码也参考自经典方案[4][5][6]中的内容,但进行了一些优化,比较重要的部分包括: 由于Linux内核4.17版本前后的系统调用函数签名不同,经典方案中需要通过条件编译的方式为每个hook
1、在ubuntu官网下载ubuntu16.04的镜像和对应ubuntu16.04的内核版本源代码,或者在镜像源上找 2、安装ubuntu16.04到PC主机上 接下来执行以下: 编译新的Linux内核给...X86内核使用出现以下错误: scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory...再到内核源码根目录 cp /boot/config-xxxxxx-generic make -jx (x代表数字2,4,8,表示CPU核心数) make modules_install make install...确认成功后,reboot 内核移植成功。...总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。如果你想了解更多相关内容请查看下面相关链接
移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。...make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-...=arm-linux- 1,make s3c2410_defconfig(生成.config) 2,make zImage 即可生成压缩内核印象 uboot引导内核,入口点必须为0x30008000...777 文件)权限 uboot的使用:tftp下载内核,直接用交叉网线连接PC(实际上为虚拟机)和开发板即可 uboot启动之后,输入:printenv 查看 serverip是不是你的虚拟机的...zImage uImage的制作: 先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.6.30.4
更改或编辑内核启动参数非常重要,当您想要修复在引导过程中导致错误,测试新功能,激活其他驱动程序或禁用系统上的功能的问题。...这通常是在计算机上只安装一个Linux发行版的情况下,所以没有经验的用户可能不知道如何访问grub的选项来更改内核启动参数。 为此,您可以在出现闪屏时简单地按住“Shift”键。...没有经验的用户在这一点上应该特别小心,并考虑测试以前的内核版本的参数更改,并始终保持工作的内核选项不受影响,可用于出现问题的情况。...现在要添加一个新参数,只需用你的箭头键将光标移动到以“Linux”开始的行上。 然后,您可以在行上的最后一个文本条目之后添加新参数(在本例中为“quiet splash”)。...注意在以下截图上以“GRUB_CMDLINE_LINUX_DEFAULT”开头的行。 在这一行上,您可能会发现“安静的飞溅”部分。 在引号中输入新参数,并在条目之间留下空格。
· 对USB总线的支持:近年来,USB(通用串口总线)的技术是计算机界振奋人心的事情之一,现在已经出现了大量的使用这种接口的设备,如键盘、鼠标、音箱、Modem等等。...使用USB接口使得计算机外设的安装和使用变得更为简单,自然成为了一种潮流。现在的Linux 也可以很好地支持这种总线接口的设备。...· 内核级的Web服务器:这种Web服务器和我们所谓的Apache用户层上的Web服务器并不冲突。...现在的内核可以支持多达42亿个用户。在Intel架构上可以支持到多达4GB的内存。并且现在的内核还可以支持多达16块以太网卡,同时支持最大容量为2GB的文件。...· 对内存的需求很小:大家比较关心的一个问题是Linux现在需要多少内存才能正常工作。
领取专属 10元无门槛券
手把手带您无忧上云