哪里可以找到系统调用源代码?

2024-03-28

在 Linux 中,如果我有源代码树,在哪里可以找到所有系统调用的源代码?另外,如果我想查找特定系统调用的源代码和程序集,我可以在终端中输入类似的内容my_system_call?


您需要 Linux 内核源代码才能查看系统调用的实际源代码。如果安装在本地系统上,手册页仅包含调用的文档,而不包含其源本身。

不幸的是,系统调用不仅仅存储在整个内核树中的一个特定位置。这是因为各种系统调用可以引用系统的不同部分(进程管理、文件系统管理等),因此将它们与与系统的特定部分相关的树部分分开存储是不可行的。

你能做的最好的事情就是寻找SYSCALL_DEFINE[0-6]宏。它(显然)用于将给定的代码块定义为系统调用。例如,fs/ioctl.c有以下代码:

SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
{
/* do freaky ioctl stuff */
}

这样的定义意味着ioctl系统调用已声明并采用三个参数。旁边的数字SYSCALL_DEFINE表示参数的数量。例如,在以下情况getpid(void),声明于kernel/timer.c,我们有以下代码:

SYSCALL_DEFINE0(getpid)
{
        return task_tgid_vnr(current);
}

希望事情能澄清一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪里可以找到系统调用源代码? 的相关文章

  • 将 void* 作为函数调用而不声明函数指针

    我已经搜索过 但找不到任何结果 我的术语可能有问题 所以如果以前有人问过这个问题 请原谅我 我想知道是否有一种简单的方法可以调用void 作为 C 中的函数 无需首先声明函数指针 然后为函数指针分配地址 IE 假设要调用的函数是类型void
  • C# 检查闰年

    我想将输入日期 1 年添加到名为完成日期的列中 如果输入日期是闰年 我需要添加 364 天 如果不是 365 天的话 有没有办法在 c 中检查这一点 使用当前日期时间年份并操作闰年 不操作 然后添加天数 Thanks 您可以使用日期时间 I
  • 从 C 调用带有字符串参数的 Go 函数?

    我可以从 C 调用一个没有参数的 Go 函数 按照下面的 https github com joeprivacy crefgo hello world 这通过编译go build和打印 Hello from Golang main func
  • Linux 中如何确定哪个进程正在使用某个端口

    我目前正在其默认端口上运行 RethinkDB 因为如果我将浏览器指向localhost 8080我看到 RethinkDB Web 界面 我想关闭 RethinkDB 并使用以下命令在另一个端口上重新打开它 port offset争论 然
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • Task.WaitAll 保持循环

    我正在尝试这个异步代码只是为了测试 async 关键字 public async Task
  • 不明确的元函数或未定义的类型

    我是元功能的新手 我想编写一个函数 将复合类型中某种类型的所有匹配项替换为其他类型 在示例中 replace
  • std::vector 错误 C2582:“operator =”函数在以下位置不可用

    我使用简单的向量push back到类型A的对象 并收到此错误 这是我的代码 class A public A int a int b int c include A h std vector a vec objects new std v
  • 包含不同类型的两个集合相交

    假设我有一个集合 称之为ids它是类型IEnumerable
  • IBM Rhapsody 中状态图终止连接器的理解

    在IBM Rhapsody中 如果我使用new创建了一个类的实例 那么我们是否必须通过调用delete来处理内存的释放 或者Termination Connector将在其状态图中通过内存释放来处理其销毁 如果您使用 C 和 OXF 对象执
  • dev_t 和 ino_t 是否必须是整数类型?

    glibc 的文档保留它们是整数类型 不比 unsigned int 窄 但我没有找到说明它们必须是整数类型的标准参考 另请参阅 time t 所以最后 问题就变成了 include
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • 将文件夹中结构化的预构建文件集添加到 android out 文件夹

    我为arm编译了glibc 这与Android glibc或bionic C不同 因为我编译的glibc环境将有助于提供更多api 现在我可以在 Android 运行时将 glibc 环境复制到 system 文件夹中 并且在执行 chro
  • LINQ 表达式树 Any() 位于Where() 内

    我正在尝试生成以下 LINQ 查询 Query the database for all AdAccountAlerts that haven t had notifications sent out Then get the entity
  • OledbConnection.Dispose() 是否关闭连接? [复制]

    这个问题在这里已经有答案了 可能的重复 如果使用 using 子句 是否需要关闭 DbConnection https stackoverflow com questions 12033998 is there any need to cl
  • MDI 窗体中的子窗口对接

    我有一个 MDI 表单和其中的一些子表单 我将子窗体停靠到 MDI 窗口的不同区域 但是当任何子窗体失去焦点时 其他停靠的窗体将重新排列 由于混乱 我准备了一组图像来展示该行为 Image1 单击任何窗口之前 Image2 点击窗口2后 问
  • C++ 模板类问题中的类型条件

    使用海湾合作委员会4 2 我有这个条件类型的元模板 template
  • 为什么 typeof 函数在 C 中不起作用

    我使用GCC编译器 版本9 2 0 我想在 C 中使用 typeof 函数 但它会引发错误 错误 typeof 之前的预期表达式 如果您需要更多信息 请询问我 int a 5 double b the expected result is

随机推荐

  • 简单的表单无法验证

    我在 stackoverflow 上找到了一种使用信号扩展 django 内置身份验证的方法 我的基本用户由 电子邮件 和密码定义 因此那里没有用户名 所以我试图根据我的需要修改它 但我的表单出现验证错误 奇怪的是 错误连接到 User e
  • 在 CSS 中使用百分比大小和填充时无法防止嵌套 Div 溢出吗?

    我希望能够使用这些属性来布局嵌套 div width 100 height 100 padding 10px 我希望子元素的宽度和高度是 100 其余的 space after填充是计算出来的 而不是之前计算的 否则 当我有如下例所示的文档
  • Laravel base_path() 给出错误 - 调用未定义的方法 baseDir()

    我有一个测试类 我正在尝试使用全局帮助器方法base path 但我收到以下错误 Error Call to undefined method Illuminate Container Container basePath myprojec
  • AWS API Gateway:使用 302 重定向和 set-cookie 标头

    我使用 AWS API Gateway 进行重定向作为响应 简单流程 aaa com gt API 网关和 Lambda 302 重定向 gt bbb com 跟随时效果很好the blog https rpgreen wordpress
  • 将 JSON 数据从 Android 发送到 PHP 并写入文本文件

    我正在尝试获取在 Android 设备上动态创建的特定 JSON 文件 并使用 HTTP post 请求将该数据发送到 PHP 脚本 以存储到文本文件中以供以后使用 最终我还需要将数据保存在 MySQL 数据库中 但我一次一步地工作 JSO
  • 如何禁用“提交”按钮?

    如何在表单有效之前禁用 提交 按钮 angular2 是否有相当于 ng disabled 的功能 可以在 提交 按钮上使用 ng disabled 对我不起作用 正如这个 Angular 中所见example https github c
  • “签名无效,代码对象根本没有签名”错误

    我已经浏览 Stack 几个小时试图尝试修复这个错误 并且我已经尝试了我能找到 想到的一切 我正在向 App Store 提交现有应用程序的更新 在提交我的版本后 我不断收到此错误 签名无效 代码对象根本没有签名 确保你 已使用分发证书而不
  • 在 Kubernetes pod 中克隆安全的 git 存储库

    我遇到了一个有趣的情况 我需要将私有 github 存储库克隆到我在 Kubernetes 中运行的 Docker 容器中 最初我尝试使用 gitRepo 安装 但是 在我的部署清单中包含 OAuth 密钥是不可接受的 我想使用存储库部署密
  • 避免循环后重复代码?

    使用循环时 我经常会编写两次代码 例如 在复习 Udacity 计算机科学课程时 我编写了代码 用于查找最连续重复的元素的函数 def longest repetition l if not l return None most reps
  • 如何在 Mailjet v3 PHP 包装器中获取联系人 ID?

    我使用 Mailjet api 将提交的电子邮件存储在 Mailjet 列表中 当有 Mailjet 0 1 版本 API 时 这可以正常工作 当时没有任何 PHP 包装器 但很容易使用他们的示例 但是当他们将 API 更改为版本 3 时
  • 使用 ruby​​、python、perl、java 或其他方式对 Google 进行脚本驱动的自动化优化

    背景 同事 Adam 在过去一年左右的时间里一直在使用 Google Refine 来处理数据库下载 并取得了巨大成功 但 Adam 获得了新的工作机会 因此他在 Google Refine 中所做的所有工作和专业知识都将消失 Ben 希望
  • 是否可以将 OpenMP 库与 Android NDK 一起使用?

    是否可以将 OpenMP 库与 Android NDK 一起使用 也许有人已经尝试将它们编译在一起并可以提供一些提示 随着双核平板电脑 智能手机的出现 我认为在应用程序开发中使用 OpenMP 功能会非常好 先感谢您 对于现在遇到这个问题的
  • 导入错误:“图标”未从“antd”导出

    我创建了一个 React 应用程序 并且正在使用 Ant Design antd 在我的一个项目文件中 我想使用该标签 但我不能 显然这是 ANT V4 上的问题 我正在使用以下导入语句 import Icon from antd 并收到以
  • d3.js 在非 svg 元素上强制布局

    d3 js layout force 可以用于 重新 定位 div 等 svg 元素吗 如果 div 有position absolute maybe left and top可以用作等效项x1 and y1用于 svg 元素的属性 目标是
  • 如何将子节点从一个节点复制到另一个节点?

    情况 我需要下载 childNode 然后将其 set 到另一个节点中 问题是我只想在 childNode 的 Score 属性达到 100 时才执行此操作 我应该在何时何地检查帖子的分数是否为 100 或更高 以及如何将它们复制到新索引一
  • jQuery 选择器 jQuery("element") 和 $("element") 有什么区别?

    我以前多次使用过 jQuery 但总是这样使用 document 最近我多次看到有人使用jQuery document 我不知道它们之间的区别 我认为它们是相同的 但我现在有一个非常困难的问题 你知道 jQuery 插件的大部分用途 doc
  • GMSPolyline 非常大的内存峰值

    在允许用户在各种不同类型的地图上显示我们称之为轨迹的复杂位置点列表的 GPS 应用程序中 每个轨迹可以包含 2k 到 10k 个位置点 当轨迹在非 Google 地图类型上呈现时 它们会被大量剪切 修剪和路径简化 这是为了降低内存使用量并提
  • Ubuntu 上的 MonoDevelop 和 libpjsipDll.so 库。系统.DllNotFoundException

    我正在尝试在 Linux 上使用一个名为 libpjsipDll v44 so我从这里得到的http code google com p sipeksdk downloads list http code google com p sipe
  • 使用 strsplit 中长度不等的 ldply

    我正在尝试根据一些分隔符将数据框列拆分为多个列 我在这个网站上找到了各种答案 并且我正在尝试寻找不同的工作方式 我遇到麻烦了ldply 问题是输出strsplit是不同长度元素的列表 这是一些示例数据 有效的数据以及我正在尝试的数据ldpl
  • 哪里可以找到系统调用源代码?

    在 Linux 中 如果我有源代码树 在哪里可以找到所有系统调用的源代码 另外 如果我想查找特定系统调用的源代码和程序集 我可以在终端中输入类似的内容my system call 您需要 Linux 内核源代码才能查看系统调用的实际源代码