NNAPI Burst -- runtime V1_2 skeletal implementation

FastMessageQueue is a Treble-compliant data structure that enables fast
communication between two processes. The FMQ object itself is an atomic
circular buffer that is optionally synchronized with a futex. However,
FMQ has no notion of ownership or lifetime across processes, so it must
be paired with higher-level constructs to manage the lifetime and
ownership.

The NNAPI is introducing the notion of an "Execution Burst" object (or
more simply a "Burst" object), which is similar to an
ANeuralNetworksExecution, but is intended to be reused across multiple
executions and has lower IPC overheads. It achieves this low IPC
overhead by replacing HIDL HwBinder calls with FMQ messages.
Specifically, it replaces IPreparedModel::executeSynchronously's call
from the client into the service with fmq_sync<FmqRequestDatum> (an FMQ
channel used to pass a serialized Request object) and it replaces
the return from the service into the client with
fmq_sync<FmqResultDatum> (an FMQ channel used to return serialized
result status and OutputShapes information).

Each channel is a unidirectional flow of information with exactly one
producer and exactly one consumer. The channels are created by the NN
runtime and passed to the service via
IPreparedModel::configureExecutionBurst.

This CL implements the new method
V1_2::IPreparedModel::configureExecutionBurst in TestExecution,
TestPartitioning, and the sample driver to prevent compiler errors.

Bug: 119570067
Test: mma
Change-Id: I3bf8d5ab1510d34c4409691f76b200a718a1a224
Merged-In: I3bf8d5ab1510d34c4409691f76b200a718a1a224
(cherry picked from commit b1b5a1aaf82b8e488801592fb099246054757cf8)
6 files changed