一、概述 mfd是Multifunction device的简称,即多功能设备,是许多有共性的设备的集合,mfd由核心层(core)以及其下的“子设备”组成。...但是,因为某些设备的共性,所以可以在mfd中提供共同的函数给其下子设备进行调用。 本文提到的hisi_fmc驱动就是如此: 下面就分析mfd设备注册过程,并结合1个实例讲解。...在里面可以选中自己需要的器件; .config文件中配置CONFIG_MFD_CORE=y 二、mfd设备添加 mfd核心代码位于drivers/mfd/mfd-core.c文件中。...对外提供添加设备和删除设备的接口:mfd_add_devices、mfd_remove_devices。...描述mfd设备单元称为“cell”,mfd_cell定义如下: /* * This struct describes the MFD part ("cell").
接着我找到了Linux内核中的一个bpf_load.c,参考了一下在普通的Linux系统中,loader是怎么处理的,所以我对该程序进行了修改,增加了以下代码: struct androidBPF {...; mfd = bpf_obj_get(map_path); if (mfd < 0) { printf("bpf_map_load() err=%d\n%s", errno...) { int mfd, ret; mfd = map_fd[prog_cnt-1]; ret = bpf_lookup_elem(mfd, key, value);...\n"); mfd = load_map(abpf->map_path); if (mfd <= 0) { printf("[debug] load_map error....参考 参考资料 https://elixir.bootlin.com/linux/v4.14.2/source/samples/bpf/bpf_load.c
01 简介 在进行Linux系统的攻击应急时,大家可能会查看pid以及/proc相关信息,比如通过/proc/$pid/cmdline查看某个可疑进程的启动命令,通过/proc/$pid/...02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...memfd_create()调用时需要传入两个参数,一个是文件名,一个是MFD_CLOEXEC标志(类似于O_CLOEXEC),以便当我们执行ELF二进制文件时,我们得到的文件描述符将被自动关闭。...(2) : fd = syscall(319, $name, MFD_CLOEXEC))也就是类似于fd = memfd_create($name, MFD_CLOEXEC) 03 EXP实现 这里开始编写...参考: https://magisterquis.github.io/2018/03/31/in-memory-only-elf-execution.html http://man7.org/linux
Linux 性能分析大神 Brendan Gregg 博客: https://www.brendangregg.com/ https://www.brendangregg.com/linuxperf.html
/* framebuffer分析 */ /* framebuffer初始化 */ static int __init fbmem_init(void) { proc_create("fb", 0,
将数据保存到一个逗号分隔的文件以供分析,并进行长时间数据捕捉 配合使用 nmon Excel 2000 电子表格分析器,该分析器能够加载 nmon 输出文件并自动为你创建几十个图形,你可以基于这些图形研究或填写性能报告...将这些数据直接放到一个 rrd 或者其他类型的数据库以备你自己分析使用。...下载源码编译 - 点击 编译 nmon 数据分析 保存好 nmon 数据以后,你可以使用以下几种工具之一来对其进行分析并生成统计图。...下载 nmon Excel 电子表格分析器 这个比较原始工具多年前由 Stephen Atkins 研发 你可以通过性能工具论坛请求支持 Linux 用户可能并不喜欢使用微软电子表格的想法,他们很难自动生成图形...,可以通过一个浏览器对分析情况进行查看 现在 - 开源了 nmon for Linux 是一个单一的 5000 行代码的源码文件和单一的 makefile。
Docker 镜像 在主机上执行 docker exec 进入容器内 关于容器安全或者容器的运行机制,其实涉及的点很多,我在去年的一次线上分享 《基于 GitLab 的 CI 实践》[3] 有提到过 Linux...# define MFD_CLOEXEC 0x0001U# define MFD_ALLOW_SEALING 0x0002U# endifint memfd_create(const...实际上,这些函数是在 2015 年 2 月(距这次修复整整 4 年,也挺有趣)被加入到 Linux 3.17 内核中的。.../os/debian echo Hello docker: Error response from daemon: OCI runtime create failed: container_linux.go...:344: starting container process caused "process_linux.go:293: copying bootstrap data to pipe caused
进程间通信(IPC)子系统实现在单个Linux系统上进行进程间通信的多种机制。 从依赖性的角度分析: 进程调度程序子系统使用内存管理器为恢复特定进程的特定进程调整硬件内存映射。...3.各子系统架构分析 3.1 进程调度器架构 进程调度器是Linux内核中最重要的子系统。其目的是控制对计算机CPU的访问。这不仅包括用户进程的访问,还包括其他内核子系统的访问。...3.2.1 模块结构分析 内存管理器主要由以下三个模块组成: 体系结构相关模块为内存管理硬件提供了虚拟接口 体系结构无关模块执行所有的每个进程映射和虚拟内存交换。...3.2.2 从数据表征的角度分析: 内存管理器存储物理地址到虚拟地址的每个进程的映射。该映射作为参考存储在流程调度程序的任务列表数据结构中。...3.3.1 模块结构分析 可分为四大模块: 公共驱动抽象模块 由于存在大量不兼容的硬件设备,因此存在大量的设备驱动程序。Linux系统最常见的扩展是添加了新的设备驱动程序。
我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉。...它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。 ? Linux预置七种运行级别(0-6)。...Linux的解决办法,就是七个 /etc/rcN.d 目录里列出的程序,都设为链接文件,指向另外一个目录 /etc/init.d ,真正的启动脚本都统一放在这个目录中。...顺便提一下,除了Linux以外, Mac OS X 使用的shell也是Bash。但是,它只加载.bash_profile,然后在.bash_profile里面调用.bashrc。
/* * uart 打开分析 * * 问题: 当应用程序调用open系统调用函数,那么是如何open串口的?
/*platform总线,驱动,设备模型。 这是一种机制。这样会使得驱动编写方便,便于维护*/ /*platform总线是一种虚拟的总线。 其实platfor...
前言 之前 红队视角下Linux信息收集 中提到过提权的信息收集命令,但没有细讲。本篇文章将着重于各种linux提权手段,总结提权的条件和原理。...列出所有建立的网络连接 正在运行的程序 查找并列出进程二进制文件和关联的权限 列出inetd.conf / xined.conf内容和关联的二进制文件权限 列出init.d二进制权限 信息的命令都可以在之前的 红队视角下Linux...dmidecode -s system-product-name [8.png] systemd-detect-virt virt-what [9.png] --- 总结 本文从软件和系统两个方面梳理了linux
而linux在缺页异常的处理代码中试图分配内存时,又可能由于系统内存紧缺而分配失败,导致进程进入睡眠; 2、代码执行过程中硬件产生中断,linux进入中断处理程序而搁置当前进程。...普通进程具体的调度算法非常复杂,并且随linux内核版本的演变也在不断更替(不仅仅是简单的调整),所以本文就不继续深入了。...有兴趣的朋友可以参考下面的链接: 《Linux 调度器发展简述》 《鼠眼看Linux调度器》 《鼠眼再看Linux调度器[1]》 《鼠眼再看Linux调度器[2]》 调度程序的效率 “优先级”明确了哪个进程应该被调度执行...在linux 2.4时,可执行状态的进程被挂在一个链表中。每次调度,调度程序需要扫描整个链表,以找出最优的那个进程来运行。...那么,为什么从linux 2.6早期到近期linux 2.6版本,调度程序选择进程时的复杂度反而增加了呢?
Linux的虚拟化 分类 全虚拟化: 将5大组件全部虚拟到虚拟机管理器 消耗进行5大组件的虚拟,两次虚拟用户空间和内核空间 vmware、Hyperrunder 半虚拟化:HOST
我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉。...它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。 Linux预置七种运行级别(0-6)。...Linux的解决办法,就是七个 /etc/rcN.d 目录里列出的程序,都设为链接文件,指向另外一个目录 /etc/init.d ,真正的启动脚本都统一放在这个目录中。...顺便提一下,除了Linux以外, Mac OS X 使用的shell也是Bash。但是,它只加载.bash_profile,然后在.bash_profile里面调用.bashrc。
Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令。本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解 sudo 命令相关的技巧。...情景五:sudo 操作记录日志 作为一个 Linux 系统的管理员,不仅可以让指定的用户或用户组作为root用户或其它用户来运行某些命令,还能将指定的用户所输入的命令和参数作详细的记录。
[root@localhost ~]# iostat -x 1 //1表示1秒刷新一次
type 类型b 块设备, d 目录, c 字符设备文档, p 管道文档, l 符号链接文档, f 普通文档name 文件名支持通配符size 文件大小+ 表示...
基本概念 Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉...oom killer机制分析 oom killer是计算出选择哪个进程kill呢?
领取专属 10元无门槛券
手把手带您无忧上云