运行时平台抽象层 (PAL)¶
ExecuTorch 的平台抽象层 (PAL) 提供了一种方法,允许执行环境覆盖诸如以下操作:
获取当前时间。
打印日志语句。
使进程/系统陷入恐慌状态。
PAL 函数声明位于 executorch/runtime/platform/platform.h 中。
覆盖默认 PAL¶
默认 PAL 实现位于 executorch/runtime/platform/default/posix.cpp 中。它使用 std::chrono::steady_clock 获取时间,将日志消息打印到 stderr,并做出其他默认假设。
但是,如果它们不适用于您的系统,您可以通过以下方式覆盖默认 PAL:
在您的应用程序的某个
.c或.cpp文件中包含executorch/runtime/platform/platform.h。定义一个或多个
et_pal_*()函数的实现。
默认 PAL 函数是弱符号,因此提供您自己的强符号定义可以在链接时覆盖它们。为了确保您的定义优先,您可能需要确保强定义在链接顺序中位于弱定义之前。
最小 PAL¶
如果您的系统不支持 posix.cpp 调用的函数,导致构建问题,您可以改为使用位于 executorch/runtime/platform/default/minimal.cpp 的无操作最小 PAL,方法是将 -DEXECUTORCH_PAL_DEFAULT=minimal 参数传递给 cmake。这将避免调用 fprintf()、std::chrono::steady_clock 以及 posix.cpp 使用的任何其他函数。但由于 minimal.cpp 中的 et_pal_*() 函数是无操作的,您需要全部覆盖它们。