问题标签 [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.
c++ - Mach 线程在 x86_64 上不起作用
我正在尝试写一个简单的“你好,世界!” 在 x86_64 上使用马赫线程的程序。不幸的是,程序在我的机器上因分段错误而崩溃,我似乎无法解决这个问题。我在网上找不到太多关于 Mach 线程的文档,但我参考了以下C 文件,该文件也使用了 Mach 线程。
据我所知,我做的一切都是正确的。我怀疑分段错误是因为我没有正确设置线程的堆栈,但我采取了与参考文件相同的方法,其中包含以下代码。
你知道我做错了什么吗?
参考文件使用C++11;如果使用 GCC 或 Clang 编译,则需要提供std=c++11
标志。
input - 将 LED 引脚配置为 MACHxo2 板上的输入
我正在尝试将连接到板载 LED 的引脚配置为输入引脚。文档说明它们是免费的 i/o,但是当我用示波器探测它们时,它说它们正在输出“高”信号。这是在 MACHXO2 7000he cpld 上,但我认为任何 MACH 板的答案都是相同的。提前感谢您的帮助。
ios - 默认冰柜 (iOS)
Levin 在他的书Mac OS X and iOS internals: To the Apple's Core 中有一章。与可用于虚拟内存管理的默认冻结器相关。据说它是在osfmk/vm/default_freezer.c
在撰写本文时,这仍然不完整。有谁知道这是否在较新版本的 iOS 中实现?我没有找到很多有关此的文档。
objective-c - NSWorkspace runningApplications 不返回我的 XPC mach 服务
返回正在运行的应用程序和代理,但我看不到我正在运行的 XPC mach 服务(尽管它正在运行并且在活动监视器进程中可见)
即使我在活动监视器中查找 PID
我得到 res nil,虽然在其他进程中这很好用
xcode - 在 MacOSX 上构建结构化 mh_bundle 所需的最低命令行参数是什么?
当我使用 Xcode 构建包库时,输出是一个结构化目录,其格式为 bundlename.bundle,其中内部是 Contents 目录、Info.plist 和 MacOS 目录,其中包含包文件。
我想知道在不需要 Xcode 的情况下构建相同的输出。我想了解实现它的必要步骤,以便使用 .pro 文件在 QtCreator 上复制此行为。
有任何想法吗?
process - 在 Mac OS 中的进程之间共享未命名的信号量
我正在尝试在两个进程之间共享一个未命名的马赫信号量。我可以创建一个并在同一过程中等待它。
但我想将它发送到另一个进程(其中我只有 mach_port_t),然后让它 semaphore_signal 我自己的进程。
我已经尝试过类似的事情:
这将产生一个错误,因为端口名称已经存在于目标进程中,或者如果我没有在目标进程中分配它,则会产生“未知故障”。
乃至:
但是我什至无法从一个进程中获得一个端口来发送任何东西。
我做错了什么,甚至有可能吗?
swift - MACH_TASK_BASIC_INFO 的 Swift 指针问题
我正在尝试将 ObjC stackoverflow 答案转换为 Swift 并失败。看起来我正在通过 a UnsafeMutablePointer<mach_msg_type_number_t>
,而我应该通过 an inout mach_msg_type_number_t
,但我似乎无法解决我的问题。根据我对 Swift 指针文档的理解(不多),这些应该是可以互换的..?
更多信息如下。
这是目标C:
就我在 Swift 中得到的信息而言(多行以便于类型检查)
task_info
签名是:
最后一行的错误是:
ios - 马赫内存映射文件
苹果:
应用程序可用的 VM 调用包括 vm_map 和 vm_allocate,它们可用于将文件数据或匿名内存映射到地址空间
尝试通过下拉到马赫级别来对 iOS 中的某些文件进行内存映射 - 查找文档时遇到问题。
具体来说,试图找出如何memory_object_t
使用给定文件创建一个,然后我可以将其与vm_map()
.
ios - thread_info 返回 MACH_SEND_INVALID_DEST 而不是 KERN_SUCCESS
对 now的调用thread_info
返回MACH_SEND_INVALID_DEST
而不是,KERN_SUCCESS
我还不明白是什么导致了这种新情况。
这个返回值的原因可能是什么。我传递了一个在asmach_thread_self()
内部调用时获得的有效值(即第一个参数)。在进行调用时,操作可能已完成,但仍保留。它是否可能在调用时不再存在的线程上执行?NSOperation
thread_act_t
thread_info()
NSOperationQueue
NSOperation
基本上,我想了解操作在线程的用户和系统时间方面花费了多长时间。该操作在其尾部调用异步服务,thread_info()
从该服务的完成处理程序中调用。
grand-central-dispatch - 在 OSX 10.10 上延迟代码执行
我遇到了一个非常奇怪的问题,它影响了仅在 OSX 10.10 系统上运行的代码。我已经在运行我的代码的超过 25 个 OSX 10.10 系统上看到了这种异常情况,而完全相同的代码在升级 (10.7) 之前没有表现出这种行为。此外,这个问题不是 100% 可重现的,因为它随机发生 ~0-5% 的时间。在测试代码时,机器上没有发生任何其他关键或 CPU 耗尽的情况。即使发生了其他事情,我所经历的延误实在是太可笑了,这一事实让这个结论看起来很可疑。无论如何,事不宜迟,看看下面的 NSLog 打印:
时间以纳秒为单位。根据 NSLog 时间戳,我们实际上最终等待了 20.68 秒,而不是期望的 0.679 秒。现在,让我们看一下代码:
如果您想知道 mach_wait 是什么,它是一个高分辨率计时器可用的默认值。只包括
但这并不重要,因为如果我将mach_wait_until替换为:
sleep()
usleep()
[NSThread sleepForTimeInterval:]
GCD's dispatch_after(,^{});
mach_wait_until()
不管我尝试使用哪种延迟方法,我NSLog
都会将我的“延迟”值打印到控制台作为健全性检查,以确保它是正确的毫秒数,然后触发上述方法之一。约 95% 的时间它的行为符合规范。但偶尔会随机出现 10-20 秒的延迟。是什么赋予了?这是一些优胜美地内核问题吗?同样,我从来没有经历过在 10.7 上运行相同代码的情况。而且我已经测试了上述所有延迟代码执行的方法。
更新:
根据评论建议,我继续前进sudo dtruss -f -e sudo -u USER MyApp 2> ~/myapps.log
。像往常一样,大多数 mach_wait 和 sleep 都按照他们应该的方式行事。所以为了让事情更容易识别,我添加了一个检查,如果实际睡眠持续时间 > 3x 它应该是什么,它会打印出 DELAY ISSUE。运行我的程序并搜索延迟问题。下面列出了在 mach_wait 语句之前和之后的日志打印之间发生的最频繁的系统调用(dtruss 输出):
- 99613/0xcf33b9: 30250 __semwait_signal(0xD07, 0x0, 0x1) = -1 Err#60
- 99613/0xcf33b9: 16 workq_kernreturn(0x20, 0x0, 0x1) = 0 0
上述两个电话中大约有 250 多个。可能比 __semwait 多一些 workq。semwait 通常需要大约 30000 个“单位”的时间才能完成,不管是什么。不知道如何 dtruss 时代。这些构成了呼叫的大部分。
- 752/0xcf3320: 2787191 kevent64(0x3, 0x0, 0x0) = 1 0
- 752/0xcf335d:189948 选择(0x40、0x7FC080E18220、0x7FC080E13B40、0x0、0x0)= 1 0
- 752/0xcf335d:1648403 选择(0x40、0x7FC080E18220、0x7FC080E13B40、0x0、0x0)= 1 0
这三个系统调用花费了最长的 # 个时间单位。在我们约 20 秒的等待间隙中,它们每个都出现在输出中一次。
不知道如何处理上面的=X