内核和用户空间中的TID,GID, PID,uid

这篇具有很好参考价值的文章主要介绍了内核和用户空间中的TID,GID, PID,uid。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要获取关于eBPF中的进程信息,可以使用以下函数: bpf_get_current_pid_tgid()、
bpf_get_current_uid_gid()、
bpf_get_current_comm(char *buf, int size_of_buf)。
当程序被绑定到对某个内核函数调用时,就可以使用它们。UID/GID应该比较明确,但对于那些以前没有接触过内核操作细节的人来说,还是需要解释一下。
在内核中被视为PID的东西在用户空间中显示为进程的thread ID内核认为用户空间中的thread group ID是PID。类似的,bpf_get_current_comm()返回的不是通常的进程名(可以通过ps命令查看),而是线程名。

bpf_get_current_pid_tgid

语法:u64 bpf_get_current_pid_tgid(void)
低32位为当前进程ID,高32位是组ID。
使用 bpf_get_current_pid_tgid() >> 32 进行得到用户空间的pid

bpf_get_current_pid_tgid 的返回值为: current->tgid << 32 | current->pid,
高 32 位置为 tgid ,低 32 位为 pid(tid)

tgid也叫做线程组id,也就是真正意义上的进程id。
当前进程id,也就是当前线程id(内核意义上的)。
即在内核中被视为PID的东西在用户空间中显示为进程的thread ID。内核认为用户空间中的thread group ID是PID

概念可以参考Linux的pid和tgid的区别 - AlexNoBug的文章 - 知乎
https://zhuanlan.zhihu.com/p/142836568
内核和用户空间中的TID,GID, PID,uid,linux kenel,linux,运维,服务器

bpf_get_current_uid_gid

语法:u64 bpf_get_current_uid_gid(void)

返回用户ID和组ID.
高32位为GID,低32位为UID

bpf_get_current_common
语法:bpf_get_current_comm(char *buf, int size_of_buf)

用当前进程名字填充第一个参数地址。文章来源地址https://www.toymoban.com/news/detail-731468.html

到了这里,关于内核和用户空间中的TID,GID, PID,uid的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux字符设备驱动(设备文件,用户空间与内核空间进行数据交互,ioctl接口)

    在Linux系统中“一切皆文件”,上一篇讲述了cdev结构体就描述了一个字符设备驱动,主要包括设备号和操作函数集合。但是要怎么操作这个驱动呢?例如,使用open()该打开谁,read()该从哪读取数据等等。所以就需要创建一个设备文件来代表设备驱动。 应用程序要操纵外部硬件

    2024年02月12日
    浏览(41)
  • 【linux驱动】用户空间程序与内核模块交互-- IOCTL和Netlink

    创建自定义的IOCTL(输入/输出控制)或Netlink命令以便用户空间程序与内核模块交互涉及几个步骤。这里将分别介绍这两种方法。 1. 定义IOCTL命令 在内核模块中,需要使用宏定义你的IOCTL命令。通常情况下,IOCTL命令包括了一个命令编号、请求类型的方向(读/写/两者)以及数

    2024年01月20日
    浏览(38)
  • 【Linux】Linux 中的UID

    参考:https://www.cnblogs.com/bwangel23/p/4225818.html Linux中,UID用于标识一个用户(例如alice,bob,root) Android中,UID用于标识一个应用程序或系统服务 每个用户有一个UID。 内核为每个进程维护3个UID标识。这三个UID标识分别是 RUID(Real UID,实际用户ID) 、 EUID(Effective UID,有效用户ID)

    2024年02月08日
    浏览(39)
  • 用户空间与内核通信(二)

    文章:用户空间与内核通信(一)介绍了系统调用(System Call),内核模块参数和sysfs,sysctl函数方式进行用户空间和内核空间的访问。本章节我将介绍使用netlink套接字和proc文件系统实现用户空间对内核空间的访问。 netlink是一种基于socket的通信机制,用于在用户空间与内核

    2024年02月20日
    浏览(45)
  • 进程空间管理:用户态和内核态

    用户态虚拟空间里面有几类数据,例如代码、全局变量、堆、栈、内存映射区等。在 struct mm_struct 里面,有下面这些变量定义了这些区域的统计信息和位置。 其中,total_vm 是总共映射的页的数目。我们知道,这么大的虚拟地址空间,不可能都有真实内存对应,所以这里是映射

    2024年02月06日
    浏览(36)
  • 内核与用户空间的通信实现—netlink

            netlink是一个内核空间与用户空间通信的机制,相对ioctl和procfs方式来说,netlink有很多优点: netlink使用简单,与UDO的socket编程类似,直接使用socket编程的API即可。只需要自定义一个新类型的 netlink 协议定义即可。 netlink是一种异步通信机制,在内核与用户态应用之间

    2024年02月16日
    浏览(36)
  • android 系统查看 pid和uid找到对应的应用

    通过packages.xml,查看需要查询的应用的UID 终端中输入adb shell,然后输入cat /data/system/packages.xml。 cat /data/system/packages.list 查看方式 通过PS命令 终端输入adb shell然后输入ps,可以查看到如下图进程列表 通过进程列表我们可以看到有多种类型的用户,其中u0_axxx代表着应用程序的用

    2024年02月11日
    浏览(51)
  • hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2]系统找不到指定的文件

    hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到指定的文件 类似问题解决办法 通过代码寻找,问题代码出现在这句 其中_ADB变量值为adb;这句话的意思是在cmd中执行 adb -s shell {device_id} getprop ro.product.model 并返回执行结果,这里返回的结果为 系

    2024年02月11日
    浏览(48)
  • whisper执行ffmpeg时,报错: hp, ht, pid, tid = _winapi.CreateProcess(executable, args, 系统找不到指定的文件。

    最近在用openai/whisper-small进行语音转文字任务时,想着自己下载模型在本地离线跑,但是遇到了一下问题: 执行代码后,报错:     这个时候很大可能是这个_winapi.CreateProcess( executable , args,.....)中 executable 的问题。 当我们直接调用模型进行语音转问文字时,会调用 fmpeg对数

    2024年02月03日
    浏览(36)
  • Linux内核源码分析 (B.2)虚拟地址空间布局架构

    Linux内核只是操作系统当中的一部分,对下管理系统所有硬件设备,对上通过系统调用向 Library Routine 或其他应用程序提供API接口。 内存管理可以通过以下三个维度进行介绍: 用户空间 相当于应用程序使用 malloc() 申请内存,通过 free() 释放内存。 malloc() / free() 是 glibc 库的内

    2024年02月09日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包