问题标签 [mach]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
337 浏览

iphone - 从应用程序获取 CPU 使用率

可能重复:
iOS - 从应用程序获取 CPU 使用率

我正在尝试从我的应用程序监控 iOS 4.x 中的 CPU 使用情况。我找到了 host_processor_info,但它是一个未记录的 API,所以我不能使用它。是否存在我可以用于此目的的另一个功能?

提前致谢。

0 投票
1 回答
527 浏览

macos - mach_inject 启动

目前我正在尝试向 Finder 注入一个包,一切正常,在 Activity Monitor 中我可以看到我的包驻留在那里。

但是,我的包中的代码不执行。

我想问一下如何开始执行捆绑包中的代码?

目前在捆绑包中我只有一个void load()函数,并在其中打印一行以指示它已加载到控制台。

这是正确的启动方式吗?

0 投票
2 回答
621 浏览

kernel - 将内核移植到不同的架构?

我想将xnu内核移植到 ARM 架构,最终目标是能够在 Qemu 中运行完整的内核。虽然我确实意识到这是一项非常艰巨的任务,但我仍然想尝试一下。

据我所知,您打算为内核 ( osfmk/arm/start.s) 编写一个入口点,在其中进行一般初始化(MMU 和 PlatformExpert),之后可以启动 Kext/IOKit 子系统并加载 CPU 特定的扩展(即陷阱, GPIO,时钟),它们要么预先链接到二进制文件中,要么由引导加载程序加载(因为由于 NAND 扩展尚不可用,内核无法与文件系统交互)。

虽然我对 ARM CPU 的工作原理有一个大致的了解,但我什至不知道从哪里开始使用该xnu端口,因为我不完全确定如何:

  • 进行低级调试(因为内核调试工具在启动早期不可用)。
  • 将 ARM 分支与内核源代码树的其余部分集成(即确保其中的东西osfmk/kern正常工作)。
  • 为独立于平台的内核创建一个健全的环境来启动(machine_startup());
  • 修复主内核代码中的一些平台特定代码(大多数平台代码仅限于,osfmk/platform_name但其中一些必须集成到osfmk/kern其他代码中)。

是否有任何关于将XNU(或至少Mach)内核移植到不同平台的体面指南,就像有 Linux 指南一样?

0 投票
1 回答
289 浏览

c - CPU_STATE_MAX 是什么?

什么是CPU_STATE_MAX宏,它的用途是什么?我找不到任何描述性/相关的谷歌搜索结果或手册页。

我在 Mac OSX Snowleopard 上,如果这有什么不同的话。

0 投票
3 回答
2811 浏览

macos - 哪个 PID 在给定的 mach 端口上侦听

我的应用程序接收 mach IPC 消息并为调用者返回答案。我有马赫呼叫者port(msgh_remote_port),我想知道PID呼叫者。我可以通过PID侦听特定马赫端口的马赫端口在 OSX 上找到吗?

0 投票
3 回答
3496 浏览

macos - 从 KEXT 与 Daemon 通信并阻塞直到从 Daemon 返回结果的最佳方式

在 KEXT 中,我正在通过 vnode 或文件范围侦听器侦听文件关闭。对于某些(非常少的)文件,我需要将文件路径发送到我的系统守护程序,它会进行一些处理(这必须在守护程序中发生)并将结果返回给 KEXT。在我得到守护进程的响应之前,需要阻止文件关闭调用。根据结果​​,我需要在近距离通话中进行一些操作并成功返回近距离通话。论坛上有很多关于KEXT通信相关话题的讨论。但它们不是决定性的,而且看起来很老(2002 年左右)。这个需求可以通过FtlSendMessage(...)Win32 API 来处理。我正在寻找 Mac 上的等价物

以下是我看过并想总结一下我的理解:

  1. Mach 消息:提供非常好的双向通信方式,使用发送者和回复端口以及队列机制。但是,mach 消息 API(例如mach_msgmach_port_allocatebootstrap_look_up)似乎不是 KPI。mach_msg_send_from_kernel可以使用mach API ,但仅此一项对双向通信没有帮助。我的理解对吗?
  2. IOUserClient:这似乎更多地与从用户空间到 KEXT 的通信有关,然后从 KEXT 进行一些回调。我没有找到一种方法来启动从 KEXT 到守护程序的通信,然后等待守护程序的结果。我错过了什么吗?
  3. 套接字:这可能是最后一个选项,因为我必须实现从 KEXT 到守护进程的整个双向通信通道。
  4. ioctl/ sysctl: 我对他们了解不多。根据我的阅读,它不推荐使用,特别是对于双向通信
  5. RPC-Mig:同样我对它们了解不多。从我所看到的看起来很复杂。不确定这是否是推荐的方式。
  6. KUNCUserNotification:这似乎只是从 KEXT 向用户提供通知。它不符合我的要求。

支持的平台是(10.5 起)。因此,查看要求,有人可以就该主题提出建议并提供一些指示吗?

提前致谢。

0 投票
1 回答
250 浏览

assembly - DCPU-16 中的 XNU 内核克隆

https://github.com/galaxas0/MachX-Kernel

在我着手一个旨在失败的项目之前,我想通过提出一个简单的问题来解决问题,这样他们就不会失败:DCPU-16 到底如何加载内核……是虚拟的。我了解物理计算机上的引导和内核初始化过程,但是,DCPU-16 让我不知所措。我是否应该假设它确实是一个工作方式完全相同的 1:1 16 位处理器?

0 投票
0 回答
1878 浏览

mach - mach_inject 和 mach_override 示例代码?

mach_inject是否有人有任何适用于 OSX 10.6 或更高版本的示例工作代码mach_override?我正在尝试将代码注入 finder 以添加我自己的上下文菜单项mach_inject。我想看一些示例工作代码?如果有人有任何其他建议,也欢迎他们。

0 投票
2 回答
2459 浏览

ios - iPhone 中的总 RAM

我想知道我的 iPhone 中可用的RAM。为此,我使用了以下代码。

注意:请不要将问题解释为检索 RAM 统计信息,例如 Wired、Inactive、Active 和 Free。

结果如下:

  • 模拟器:总内存 = 2045(我的电脑包含 2GB RAM)。似乎是正确的。
  • 设备(iPhone 4):总内存 = 390(应该是 512)。不正确。
  • 设备(iPhone 3GS):总内存 = 84(应该是 256)。不正确。

请让我知道这是否是计算iDevice总RAM 的正确方法?

0 投票
0 回答
205 浏览

ios - iOS GDB 将检查寄存器命令的输出存储到变量

在 iOS GDB 我有这个:

如何将字符串存储到GDB_receivedStatusBarData:actions:中的变量中?$1请指教谢谢。

编辑:

我想我从Delorie那里找到了答案,它提到了

x 命令打印的地址和内容不会保存在值历史记录中,因为它们通常太多了,它们会妨碍。相反,GDB 将这些值作为便利变量 $_ 和 $__ 的值,供后续在表达式中使用。在 x 命令之后,检查的最后一个地址可用于方便变量 $_ 中的表达式。经检查,该地址的内容在便利变量 $__ 中可用。