
linux
文章平均质量分 74
玮玮豆豆
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
arm64 Linux操作系统知识点
低地址存放:指向上一个栈 (父函数的栈)的栈基地址 FP,类似于链表的prev指针。应用程序要访问内核就必须通过系统调用层,内核可以在系统调用层对应用程序的访问权限、用户类型和其他一些规则进行过滤,以避免应用程序不正确地访问内核。高地址存放:当前函数的返回地址,也就是进入该函数时LR的值,本书把这个地址称为P_LR(Previous LR)。在函数执行时,FP和SP寄存器会指向该函数栈空间的FP处。4. 函数返回时,ARM64处理器先把栈中的P_LR的值载入当前LR,然后执行RET指令。原创 2024-09-11 09:25:15 · 1679 阅读 · 0 评论 -
Ubuntu搭建FTP服务器
5. 执行以下指令打开/etc/xinetd.d/tftp 文件, 配置/etc/ xinetd.d/tftp 文件,将 tftp 路径设置为tftp服务目录。2. 新建tftp工作目录,并添加读、写、执行权限(没有权限后面无法正常访问该文件夹),如下图所示。3. 安装 tftp-hpa 和 tftpd-hpa 服务程序,其命令如下图所示。原创 2024-09-10 14:42:59 · 780 阅读 · 0 评论 -
arm64高速缓存基础知识
随机法:随机地确定替换的高速缓存行,由一个随机数产生器产生随机数来确认替换行FIFO法:选择最先调入的高速缓存行进行替换LRU法:最少使用的行优先替换。原创 2024-09-09 11:33:36 · 2057 阅读 · 2 评论 -
Linux编程--信号基础
1. 信号是事件发生时对进程的通知机制。有时也称为软件中断2. 引发内核为进程产生信号的各类事件如下:硬件发生异常,即硬件检测到一个错误条件并通知内核,随即再由内核发送相应信号给相关进程。硬件异常的例子包括执行一条异常的机器语言指令,诸如,被 0 除,或者引用了无法访问的内存区域。用户键入了能够产生信号的终端特殊字符。其中包括中断字符(通常是Control-C)、暂停字符(通常是 Control-Z)。发生了软件事件。原创 2024-09-06 10:03:59 · 1402 阅读 · 0 评论 -
Linux--目录与文件操作函数
因此,如果移除了符号链接所指向的文件名,符号链接本身还将继续存在,尽管无法再对其进行解引用(下溯)操作,也将此类链 接称之为悬空链接。(换言之,newpath 也是符号链 接,指向 oldpath 所指代的同一文件。改名既不影响指向该文件的其他硬链 接,也不影响持有该文件打开描述符的任何进程,因为这些文件描述符指向的是打开文件描 述,(在调用 open()之后)与文件名并无瓜葛。unlink()系统调用不会对符号链接进行解引用操作,若 pathname 为符号链接,则移除链接 本身,而非链接指向的名称。原创 2024-09-05 15:49:00 · 1359 阅读 · 0 评论 -
linux文件的拓展属性
3. 默认情况下,若具有给定名称(name)的 EA 不存在,上述系统调用会创建一个新 EA。欲改变userEA值,则需要写权限,如欲将 user EA 与一文件关联, 在装配底层文件系统时需带有 user_xattr 选项。6. 想获取与某文件相关联的 EA 名列表,只需对文件拥有“访问”权限(亦即对 pathname 下的所有路径均拥有执行权限),对文件本身则无需任何权限。系统调用 setxattr()、lsetxattr()以及 fsetxattr()用来设置文件的 EA 值之一。原创 2024-09-04 00:00:00 · 1420 阅读 · 0 评论 -
arm调试-- gdb与gdbserver的安装与使用
将生成的可执行文件和 gdb-7.11.1 /gdb/gdbserver路径下生成的gdbserver复制到开发板中。PC端把可执行文件和源码拷贝到gdb-7.11.1/_install/bin下。2. 解压编译gdb以及gdbserver。1、复制gdbserver。2、运行gdbserver。5、连接gdbserver。4、在PC端运行gdb。(1)gdb PC端。(2)arm终端打印。原创 2024-09-03 09:03:59 · 1388 阅读 · 1 评论 -
Linux系统编程--时间函数
2. settimeofday()调用所造成的那种系统时间的突然变化,可能会对依赖于系统时钟单调递增 的应用造成有害的影响。最后两个字段返回的信息是:父进程(比如,times()的调用者)执行了系统调用 wait()的所有 已经终止的子进程使用的 CPU 时间。相形之下,函数 localtime()需要考虑时区和夏令时设置,返回对应于系统本 地时间的一个分解时间。当我们运行一个 shell 程序,我们可以使用的 time(1)命令,同时获得这两个部分的时间值, 以及运行程序所需的实际时间。原创 2024-09-02 11:02:02 · 2062 阅读 · 0 评论 -
Linux--实现U盘,SD卡的自动挂载
在/etc/init.d/rsC或S10mdev中加入以下语句:当有热插拔事件产生时,内核会调用/proc/sys/kernel/hotplug文件里指定的应用程序来处理热插拔事件。把/sbin/mdev写到/proc/sys/kernel/hotplug文件里。当有热拔插事件时,内核调用/sbin/mdev来处理。原创 2024-08-29 15:11:26 · 1461 阅读 · 0 评论 -
nvme的PRP与SGL
主机在命令中设置好PRP或者SGL,并告诉SSD数据源在内存的什么位置,或者从闪存上读取的数据应该放到内存的什么位置。原创 2024-08-28 08:48:44 · 1847 阅读 · 0 评论 -
Linux文件IO缓存
当操作磁盘文件时,缓冲大块数据以减少系统调用,C 语言函数库的 I/O 函数(比如, fprintf()、fscanf()、fgets()、fputs()、fputc()、fgetc())正是这么做的。3. 总之,如果需要强制刷新内核缓冲区,那么在设计应用程序时就应考虑是否可以使用大 尺寸的 write()缓冲区,或者在调用 fsync()或 fdatasync()时谨慎行事,而不是在打开文件时就使用 O_SYNC 标志。有时也称此为直接 I/O(direct I/O)或者裸 I/O(raw I/O)。原创 2024-08-26 08:32:51 · 1541 阅读 · 0 评论 -
深入探究linux文件IO
原子性是 readv()的重要属性。这意味着,假设即使有另一进 程(或线程)与其共享同一文件偏移量,且在调用 readv()的同时企图修改文件偏移量,readv() 所读取的数据仍将是连续的。要获取和修改打开的文件标志(例如,O_APPEND、O_NONBLOCK 和 O_ASYNC),可 执行 fcntl()的 F_GETFL 和 F_SETFL 操作,其对作用域的约束与上一条颇为类似。2. dup()调用复制一个打开的文件描述符 oldfd,并返回一个新描述符,二者都指向同一打开 的文件句柄。原创 2024-08-25 09:09:25 · 1059 阅读 · 0 评论 -
Linux5.0 NVMe驱动详细注释
本篇文章非常全面的介绍了基于linux5.0的nvme驱动的所有函数,基本每个函数都有非常详细的注释。同时,本篇文章全部是代码+注释的方式呈现,非常的清晰易懂。希望大家加一个关注,下一篇文章详细讲解nvme驱动中的各个结构体。原创 2024-08-24 11:39:15 · 1185 阅读 · 0 评论 -
Linux驱动设备--IIO驱动
IIO 设备提供触发缓冲区支持时,必须设置 iiodev->pollfunc,触发器触发时执行它,该处理程序负责通过 indio_dev-> active_scan_mask查找启用的通道,检索其数据,并使用 iio_push_to_buffers_with_timestamp函数将它们提供给indio_dev-> buffer。此参数取决于设备,应参考其数据表。/sys/bus/iio/devices/triggerY/:一旦IIO触发器注册到IIO核心并且对应于索引为Y的触发器,就会创建该目录。原创 2024-08-21 09:01:54 · 733 阅读 · 0 评论 -
lINUX驱动之IIO设备数据结构
而write_event_value则主要用于event事件触发的阈值参数的设置与读取等、而read_event_config、write_event_config则可以用于实现event的使能与否;对struct iio_buffer_access_funcs则是该iio_buffer对应的缓存空间的访问访问,目前使用kfifo缓存数据,则其访问方法为iio_store_to_kfifo、iio_read_first_n_kfifo等,主要是将数据存储至kfifo或从kfifo中取出缓存数据等。原创 2024-08-21 08:16:40 · 790 阅读 · 0 评论 -
Ubuntu与windows文件互传
home/user/linux/nfs 是要共享的目录,*代表允许所有的网络段访问,rw 是可读写权 限,sync 是文件同步写入存储器,no_root_squash 是 nfs 客户端分享目录使用者的权 限。如果客户端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限。②TFTP 需要一个文件夹来存放文件,我们在根目录下新建一个/tftpboot 目录做为 TFTP 文件存储目录。NFS 允许挂载的目录及权限在文件/etc/exports 中进行定义。原创 2024-08-20 09:44:52 · 312 阅读 · 0 评论 -
ZYNQMP XDMA硬件设计
Xilinx 提供的DMA Subsystem for PCI Express IP(简称XDMA)是一个高性能,可配置的、适用于PCIE2.0,PCIE3.0 的SG 模式 DMA,提供用户可选择的 AXI4 接口或者 AXI4-Stream接口。XDMA 是SGDMA,并非Block DMA,SG 模式下,主机会把要传输的数据组成链表的形式,然后将链表首地址通过BAR 传送给XDMA,XDMA 会根据链表结构首地址依次完成链表所指定的传输业务。XDMA其他的参数配置无需更改,默认即可。原创 2024-08-19 17:54:16 · 930 阅读 · 0 评论 -
Linux内核工具和辅助函数
由于队列上挂起的任务在每个 CPU 上是串行执行的,因此任务不应该长时间睡眠因为在它唤醒之前,该队列上的其他任务都无法运行,一个任务甚至不知道它和哪些任务共享工作队列,所以任务可能需要较长时间才能得到CPU。第一部分称作上半部或者硬IRQ,它使用 request_irq()注册函数,最终将根据需要屏蔽/隐藏中断,执行快速操作(实际上是时间敏感务,读写硬件寄存器,以及快速处理此数据),调度第二部分和下一部分,然后确认中断线禁用的所有中断都必须在退出下半部之前重新启用。下面是内核中的3项功能。原创 2024-08-19 17:40:22 · 1399 阅读 · 0 评论