3.2 Android eBPF程序类型

2023-09-17 22:12:37

写在前面

为什么要先了解eBPF程序类型?

从帮助函数中,我们可能基于内核的eBPF开放API,对eBPF的能力有一个比较细致的认识,但是这并不能让我们从全局,或者更概括的认识eBPF。eBPF程序类型能够更宏观的告诉我们,eBPF能做哪些事情(除网络相关)。

一,eBPF程序类型

内核中不同事件会触发不同类型的eBPF程序,那么eBPF程序类型决定了它可以监控哪些内核事件类型。

1.1 内核支持的ebpf程序类型

/bionic/libc/kernel/uapi/linux/bpf.h

enum bpf_prog_type {
  BPF_PROG_TYPE_UNSPEC,//未定义或无效的程序类型
  BPF_PROG_TYPE_SOCKET_FILTER,//该类型的eBPF程序可用于输入输出网络包的过滤
  BPF_PROG_TYPE_KPROBE,//该类型的eBPF程序可以通过kprobe机制,动态注入到内核函数当中。eBPF程序类型中没有设置uprobe是因为uprobes和kprobes原理相同,kprobe类型的eBPF程序也可以使用uprobes。
  BPF_PROG_TYPE_SCHED_CLS,//用于网络流量控制分类器。
  BPF_PROG_TYPE_SCHED_ACT,//用于网络流量控制执行器。
  BPF_PROG_TYPE_TRACEPOINT,//用作决定某个tracepoint是否应该触发。内核采用插桩的方法抓取log。插桩就是tracepoint。他是Linux内核预先定义的静态探测点。它分布于内核的哥哥子系统当中。每个tracepoint都有一个name,一个enable开关,一系列桩函数,注册桩函数的函数。桩函数类似于printk,不过桩函数并不会把信息打印到console,而是输出到内核的ringbuffer&#x
更多推荐

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218+,但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923+、2块16T西数数企业级硬盘、1块2Tintel企业级SSD1.什么是冷备份冷备是离线备份,备份好的数据可以单独存取,定期冷备可以保证数据安全,适合家庭场景2.为什么不用Raid1Raid不是一个备份方案,Raid1是做1:

matlab GPR高斯过程回归与股票价格预测

1、回归回归分析是统计分析领域的重要分支。利用回归分析模型可以进行预测。一个典型的预测问题是:给定自变量xxx的某些值处对因变量的一些噪声观测值,对新值x∗x^*x∗时因变量的最佳估计值是多少?如果我们期望底层函数是线性的,且可以对输入数据做一些规范化假设,那么我们可以使用最小二乘法来线性回归(直线拟合)。对于一些规律

【DevOps核心理念基础】3. 敏捷开发最佳实践

一、敏捷开发最佳实践1.1项目管理1.2需求管理1.3技术架构1.4技术开发1.5测试二、敏捷开发最佳实践2.1敏捷开发的执行细节三、全面的DevOps工具链四、版本控制和协作开发工具4.1集中式版本控制工具4.2分布式版本控制工具一、敏捷开发最佳实践1.1项目管理迭代开发技术团队的人员素质,人员配备完整及时有效的沟通

解锁前端Vue3宝藏级资料 第五章 Vue 组件应用 2 ( Emit )

本章带领大家理解组件、props、emits、slots、providers/injects,Vue插件等Vue组件使用的基础知识。第一章Vue3项目创建1VueCLI创建vue项目第一章Vue3项目创建2使用Webpack5搭建vue项目第一章Vue3项目创建3Vite创建vue项目第二章Vue3基础语法指令第三章V

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01前言在计算机安全领域,漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天,我们将深入探讨一个异常危险的漏洞,它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中,"exit"都是一个普遍存在的函数,通常用于正常退出程序。但这种普遍性也使得它成为了潜在的攻击目标。这个漏洞的威胁性在于

华为云云耀云服务器L实例评测|使用docker部署禅道系统

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!我的主页:早九晚十二文章目录前言准备工作华为云账号注册充值、购买服务器服务器操作密码修改登录远程工具禅道部署简介部署安装docker设置开机自启禅道镜像包获取查找并拉取镜像创建docker容器并启动开启防火墙入站策略浏览器访问IP:PO

【2023】Jenkins入门与安装

目录1.什么是Jenkins2.Jenkins安装部署3.配置Jenkins4.优化Jenkins5.插件管理5.1.联网安装5.2.hpi文件安装5.3.离线安装6.创建项目操作系统:centos7.9JAVA版本:java-11-openjdkJenkins版本:jenkins-2.401.11.什么是Jenkin

【C++】day6学习成果:继承、多态、栈和循环队列

1.将之前定义的栈类和队列类都实现成模板类栈:#include<iostream>#defineMAX8usingnamespacestd;template<typenameT>classStack{private:T*data;//栈的数组,指向堆区空间,用于存储栈的容器inttop;//记录栈顶的变量public:

潮力全开!泡泡玛特泰国首店盛大开业 限定单品点燃玩家热情

9月20日,泡泡玛特泰国首店盛大开业,吸引超千名粉丝现场排队,并在当地社交媒体引发热议。多家泰国主流媒体对此给予了关注和报道。该店坐落的尚泰世界购物中心(CentralWorld)位于泰国曼谷CBD商圈,是目前东南亚地区第二大购物中心,也是曼谷最大的百货购物中心。此前,泡泡玛特就宣布与全球最大的酒店、餐馆以及零售业集团

基于Java的设计模式-策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。基本概念策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们可以把这些封装成一个一个类,然后进行任意替换。策略模式存在三种角色:Strategy策略

PyCharm:No Python interpreter configured for the project

一、问题概述Your的Pycharm软件创建完项目后,结果无法运行,观察后,在Pycharm代码编辑区上面出现了这样的一个黄色条提示:NoPythoninterpreterconfiguredfortheproject【问题】在您的Python项目中无Python解释器,Pycharm只是一个python代码编辑器,而

热文推荐