linux
osnet
这个作者很懒,什么都没留下…
展开
-
Oracle VM VirtualBox ubuntu配置桥接
选择桥接配置ip地址配置pcip地址在这里插入图片描述。原创 2022-07-15 17:59:41 · 921 阅读 · 0 评论 -
android bpf流程
以dhcpd使用bpf为例进行分析通过PF_PACKET,SOCK_DGRAM socket直接从kernel 网卡设备层把原始整个以太网数据原始数据读到用空空间。为了只读取感兴趣的数据包类型,例如ARP包,可以通过配置bpf进行过滤。用户空间 attch bpfintopen_socket(struct interface *iface, int protocol){ int s; union sockunion { struct sockaddr sa; struct sockad原创 2021-10-07 21:43:41 · 1061 阅读 · 0 评论 -
android重新挂载根文件系统
重新挂载根文件系统mount -t rootfs -o remount rootfs /原创 2021-10-05 21:13:37 · 635 阅读 · 0 评论 -
linux can socket
https://www.kernel.org/doc/Documentation/networking/can.txtcan.txtReadme file for the Controller Area Network Protocol Family (aka SocketCAN)This file contains1 Overview / What is SocketCAN2 Motivation / Why using the socket API3 SocketCAN concept3.原创 2021-06-05 15:33:45 · 1148 阅读 · 0 评论 -
Using the GNU Compiler Collection (GCC)
https://gcc.gnu.org/onlinedocs/原创 2021-01-02 21:35:54 · 549 阅读 · 0 评论 -
linux perf
http://www.brendangregg.com/perf.htmlThe kernel stack traces are incomplete. Now a similar profile with CONFIG_FRAME_POINTER=y原创 2020-11-28 00:01:56 · 196 阅读 · 0 评论 -
linux select io处理
先看一下select机制select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。select系统调用int select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);原创 2020-10-18 21:13:10 · 298 阅读 · 0 评论 -
linux socket-recvfrom系统调用
recvfrom库函数应用程序调用recv或recvfrom库函数接收数据。recv和recvfrom主要区别是是否设置socket地址。__socketcall ssize_t recvfrom(int, void*, size_t, int, const struct sockaddr*, socklen_t*);ssize_t recv(int, void*, size_t, int);ssize_t recv(int socket, void *buf, size_t len, int f原创 2020-10-11 21:39:23 · 2572 阅读 · 0 评论 -
linux kernel/ubuntu等资源国内镜像
清华:https://mirror.tuna.tsinghua.edu.cn/kernel/v5.x/https://mirror.tuna.tsinghua.edu.cn/网易:http://mirrors.163.com/ubuntu-releaseshttp://mirrors.163.com/阿里:https://developer.aliyun.com/mirror/https://mirrors.aliyun.com/linux-kernel/?spm=a2c6h.1365110原创 2020-10-08 16:38:44 · 1979 阅读 · 0 评论 -
gitee加速下载github项目
1,登录gitee2,找到如下+位置,选择从github导入仓库3,把github中git地址复制到gitee。原创 2020-10-07 11:29:56 · 1217 阅读 · 0 评论 -
autoreconf -i -f
编译前先运行autoreconf -i -f生成configure,make in ,install等原创 2020-09-30 23:50:43 · 2377 阅读 · 0 评论 -
android libc arm-memcpy.s
bionic\libc\arch-arm\generic\bionic\memcpy.S#include <machine/cpu-features.h>#include <private/bionic_asm.h>#include <private/libc_events.h> /* * Optimized memcpy() for ARM. * * note that memcpy() al原创 2020-05-24 23:25:19 · 623 阅读 · 0 评论 -
cost-performance for various memory tech
参考:Memory.Systems-Cache.DRAM.Disk原创 2020-05-18 23:09:40 · 196 阅读 · 0 评论 -
android rootfs根文件系统挂载(二)
vfsrootfs挂载start_kernel–》vfs_caches_init,内核初始化时,调用vfs_caches_init初始虚拟文件系统相关结构,包括目录项,inode,操作方法,命名空间,file,mnt等void __init vfs_caches_init(unsigned long mempages){ unsigned long reserve; /* Base h...原创 2020-05-02 00:25:17 · 1024 阅读 · 0 评论 -
android rootfs根文件系统挂载
linux下文件目录为树状结构,文件系统挂载在虚拟系统的VFS各个目录下。VFS是Linux中的一个虚拟文件文件系统,也称为虚拟文件系统交换层(Virtual Filesystem Switch),是一种软件机制。它为应用程序员提供一层抽象,屏蔽底层各种文件系统的差异。诸如Ext2、Ext4、XFS和Btrfs等常规意义上的文件系统,还包括伪文件系统和设备等等内容。Root FileSyste...原创 2020-04-25 23:16:51 · 2834 阅读 · 0 评论 -
SDIO接口
文章目录SDIO信号和接口SDIO命令流程SDIO寄存器卡检测卡识别卡常用命令SDIO,全称:Secure Digital Input and Output ,即安全数字输入输出接口。 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。支持三种不同...原创 2020-04-24 00:08:47 · 1983 阅读 · 0 评论 -
android uevent创建设备文件
linux kernel启动过程中创建VFS,为各驱动设备在sys/class, sys/devices, sys/block创建目录和文件,分配kset和kobject,uevent文件, 然后发送uevent事件到用户空间,这些目录和文件创建需要用户空间实际创建设备文件,即在/dev目录下创建设备文件,供用户空间使用。具体过程参考uevent机制。用户空间还没有启动时,uevent事件存在...原创 2020-03-14 14:52:27 · 629 阅读 · 0 评论 -
root=/dev/mmcblk0p2根文件系统挂载
linux挂载跟文件系统,一般通过ramdisk方式。如果没有使用ramdisk方式,而是使用磁盘上分区文件系统,那么在prepare_namespace中进行。static noinline void __init kernel_init_freeable(void){ /* * Wait until kthreadd is all set-up. */ wait_for_com...原创 2020-03-08 16:04:21 · 8811 阅读 · 0 评论 -
Android system.img ext4格式
Android system.img镜像文件为sparse ext4 image格式,sparse header格式:typedef struct sparse_header { __le32 magic; /* 0xed26ff3a */ __le16 major_version; /* (0x1) - reject images with higher major versio...原创 2020-01-22 16:07:23 · 2679 阅读 · 0 评论 -
Linux inode的正确理解
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即...转载 2020-01-11 21:07:57 · 179 阅读 · 0 评论 -
linux oops问题调试
36.Linux驱动调试-根据oops定位错误代码行1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来1.1以LED驱动为例将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示:1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示:2.接下来,我...转载 2019-12-02 16:57:22 · 1752 阅读 · 0 评论 -
linux内核内存管理(zone_dma zone_normal zone_highmem)
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。 Linux内核地址空间划分通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是...转载 2019-11-27 14:28:18 · 555 阅读 · 0 评论 -
GCC -O 优化等级详解
GCC提供选项控制代码的优化等级:这些选项可以实现不同程度的优化。没有任何优化选项的话,编译时的目标是降低编译成本,并使调试产生预期的结果。语句是独立的:如果你使程序停止在语句之间设置的断点处,你可以改变任何变量的值或者改变程序计数器的值使程序执行任意函数中的语句并得到源代码中期望的结果。打开优化标志使编译器尝试以编译时间和可能的调试程序的能力为代价来改进性能和/或代码大小。编译器根据程序...转载 2019-11-21 15:54:24 · 839 阅读 · 0 评论 -
Arm linux dma mapping操作
Arm linux dma mapping目 录1 概述 32 基本概念 33 Cache操作 43.1 写数据到device 43.2 从device读数据 43.3 swio技术 43.4 代码分析 53.4.1 arm64_dma_init 53.4.2 dma_map_single 63.4.3 dma_unmap_single 8概述由于处理器存在cache,...原创 2019-10-13 12:15:25 · 4049 阅读 · 0 评论 -
linux系统调用
概述本文学习基于armv7和armv8体系的linux系统调用机制,linux内核版本为3.10.79。通过分析系统调用机制和源代码来展示系统调用过程。 什么是系统调用linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用很相似,仅仅是系统调用由操作系统核心提供,执行于核心态。而普通的函数调用由函数库或用户自己提供。执行于用户态。通常系统调用过程如...原创 2019-09-25 21:25:14 · 553 阅读 · 0 评论 -
linux内核态用户态
概述本文学习linux系统用户态和内核态相关知识,linux内核版本为3.10.79。 用户态和内核态定义内核态: CPU可以访问内存所有资源, 包括外围设备. 可以进行处理器工作模式切换,程序的切换。用户态: 只能受限的访问内存, 且不允许访问外围设备,不可以进行处理器模式切换。 为什么分用户态和内核态CPU工作分为不同的工作模式或特权级别,例如,arm包含7种工作模式,除用...原创 2019-09-25 20:54:28 · 431 阅读 · 0 评论