[all-commits] [llvm/llvm-project] bfc732: [orc-rt] Add ControllerAccess interface. (#169598)

Lang Hames via All-commits all-commits at lists.llvm.org
Tue Nov 25 19:53:21 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bfc732efbda2dc1caa78de89600834c083bedd83
      https://github.com/llvm/llvm-project/commit/bfc732efbda2dc1caa78de89600834c083bedd83
  Author: Lang Hames <lhames at gmail.com>
  Date:   2025-11-26 (Wed, 26 Nov 2025)

  Changed paths:
    M orc-rt/include/orc-rt/Session.h
    M orc-rt/lib/executor/Session.cpp
    M orc-rt/unittests/SessionTest.cpp

  Log Message:
  -----------
  [orc-rt] Add ControllerAccess interface. (#169598)

ControllerAccess provides an abstract interface for bidirectional RPC
between the executor (running JIT'd code) and the controller (containing
the llvm::orc::ExecutionSession). ControllerAccess implementations are
expected to implement IPC / RPC using a concrete communication method
(shared memory, pipes, sockets, native system IPC, etc).

Calls from executor to controller are made via callController, with
"handler tags" (addresses in the executor) specifying the target handler
in the controller. A handler must be associated in the controller with
the given tag for the call to succeed. This ensures that only registered
entry points in the controller can be used, and avoids leaking
controller addresses into the executor.

Calls in both directions are to "wrapper functions" that take a buffer
of bytes as input and return a buffer of bytes as output. In the ORC
runtime these must be `orc_rt_WrapperFunction`s (see
Session::handleWrapperCall). The interpretation of the byte buffers is
up to the wrapper functions: the ORC runtime imposes no restrictions on
how the bytes are to be interpreted.

ControllerAccess objects may be detached from the Session prior to
Session shutdown, in which case no further calls may be made in either
direction, and any pending results (from calls made that haven't
returned yet) should return errors. If the ControllerAccess class is
still attached at Session shutdown time it will be detached as part of
the shutdown process. The ControllerAccess::disconnect method must
support concurrent entry on multiple threads, and all callers must block
until they can guarantee that no further calls will be received or
accepted.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list