JJJ:结构体定义中常加的后缀:attribute ((packed)) 在GCC下:struct my{ char ch;: 的作用就是告诉编译器取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关。在GCC下:struct my{ char ch;
JJJ:urb的complete回调流程 1次urb的完成,意味着1次控制传输的完成,可能就是(令牌,data,握手)的3个阶段的完成。块传输和控制传输:process_bulk_intr_td -> finish_td。控制传输:process_ctrl_td -> finish_td。等时传输:process_isoc_td -> finish_td。
JJJ:base64编码和字节字符串&普通字符串 在 URL 或文件名中使用 Base64 编码时,通常会使用 URL 和文件名安全的 Base64 编码,其中 “+” 和 “/” 字符被替换成 “-” 和 “_”,并且不使用填充字符 “=”。Base64 编码使用一组64个字符(A-Z,a-z,0-9,+ 和 /,有时最后一字符用 “=” 替换填充空白)来表示二进制数据。前缀的使用是为了明确指出字符串是以字节的形式存在,而非 Unicode 字符,这对于处理二进制数据或在网络层面上操作数据是非常重要的。在需要将字节字符串转换回普通字符串时,可以使用。
JJJ:rcS脚本是如何被执行到的 parse_inittab 里面会调用 new_init_action(SYSINIT, INIT_SCRIPT, “”),决定了接下去初始化的脚本是INIT_SCRIPT所定义的值。在init_main()函数中会调用parse_inittab(void)函数,parse_inittab(void)函数可以使用一些默认的配置,当/etc/inittab没有配置时。kernel_init执行"/sbin/init",在此程序中,会执行到busybox的init进程入口,init_main.
JJJ:linux spi总结 在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,数据的传输是在时钟信号的上升或下降沿进行采样的。在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,时钟信号在传输开始前需要有一个确定的起始状态,时钟极性就是用来指定这个起始状态的电平状态。模式0表示时钟空闲状态为低电平,数据在时钟的下降沿采样,上升沿发送。模式2表示时钟空闲状态为高电平,数据在时钟的下降沿采样,上升沿发送。模式3表示时钟空闲状态为高电平,数据在时钟的上升沿采样,下降沿发送。/ 若采用了这个宏,时钟状态空闲时为高电平。
JJJ:WARN,WARN_ON,BUG_ON 当满足一些条件时,该函数会输出一条带有调试信息的警告消息,并打印出相应的调用栈信息,以便于开发人员进行调试。不要过度使用,否则会造成系统性能下降。在生产环境中,应该关闭大部分的内核调试功能。
JJJ:ubuntu修改静态ip 网关一般放置在网络边缘,与不同网络相连。网关会对数据包进行协议格式的解析,然后再构建适合目的网络的协议格式,发送到目的网络中。网关需要具备转换不同协议格式的能力,支持数据缓存、分组、组装、再传输等功能,以保证数据的快速、稳定传输。它可以将一个网络的协议格式转换为另一个网络可识别的协议格式,实现不同网络之间的数据传输。转换网关:是一种将不同网络协议进行转换的网关,其主要作用是将数据包格式转换为目标网络可以识别的格式。应用网关:主要用于应用层协议转换,实现HTTP、SMTP、FTP等应用协议之间的转换。
ddr测试&sd卡读写速度测试 注意/dev/zero不产生io,作为读或者写中的一方,可以用来测试纯写或者纯读的速度。time指令可以用来测试其后接指令的执行时间,细节。2、sd卡读速度和写速度测试。
JJJ:网络子系统的软中断 find_task_by_pid_ns用于查找指定命名空间(namespace)下具有指定进程ID(pid)的任务(即进程)结构体。kthreadd_task 是指向内核线程 kthreadd 的进程描述符(task_struct 结构体实例)的一个全局变量。
JJJ:linux共享中断 内核接收一个中断后,它将依次调用在该中断线上注册的每一个处理程序。如果与它相关的设备并没有产生中断,那么处理程序应该立即退出。这需要硬件设备提供状态寄存器(或类似机制),以便中断处理程序进行检查。只要有任何一个设备没有按规则进行共享,那么中断线就无法共享了。多个设备共享一个中断号,共享同一中断的各个中断设备的中断处理程序形成一个链表,内核对每个中断处理程序都要执行(有产生中断的设备本该靠边站的,它的中断处理程序也被执行了)。2、该线上的所有已注册处理程序都指定了SA_SHIRQ。1、中断线当前未被注册。
JJJ:linux系统中第一个进程 ramdisk_execute_command 变量的值可以通过内核启动参数 rdinit 来设置。在Linux内核引导过程中,如果用户在命令行参数或GRUB等 bootloader配置中指定了类似 rdinit=/path/to/executable 的参数,内核在初始化initrd之后会尝试执行位于指定路径的可执行文件作为初始化脚本或进程。上面代码片中的两个变量:ramdisk_execute_command 和 execute_command。可以看到第一个进程PID为1,拉起第一个进程的指令为。