Namespaces

Enumerations

enum ErrorPropagationMode
Name Value
kPropagate 0
kPropagateBeforeAllocation 1
kDoNotPropagate 2

ErrorPropagationMode

The ErrorPropagationMode controls propagation of failure up the Node tree (failures always

propagate down the Node tree), and also controls how much of the Node tree is involved in initial

allocation, and also how much of the Node tree is involved in subsequent logical allocations.

The granularity of subsequent logical allocations is designed to mimic the behavior of initial

allocation, so that a given Node/participant connection sees the same allocation granularity

with respect to SetDispensable() or AttachToken() sub-trees regardless of whether the Node itself

is involved in initial allocation or a later logical allocation.

The ErrorPropagationMode of a BufferCollectionToken / BufferCollection doesn't imply anything

about the ErrorPropagationMode of its parent or children.

SetDispensable() results in kPropagateBeforeAllocation.

AttachToken() results in kDoNotPropagate.

Failure of a BufferCollectionToken / BufferCollection will fail all its children, and will fail

its immediate parent if ErrorPropagationMode is kPropagate or if ErrorPropagationMode is

kPropagateBeforeAllocation and allocation (or logical allocation) has not yet occurred.

Initial allocation will aggregate constraints of all nodes from the root down, with the exception

of any sub-trees rooted at a kDoNotPropagate node.

A sub-tree rooted at a kDoNotPropagate node will not aggregate its constraints into initial

allocation.

A sub-tree rooted at a kDoNotPropagate node, with a further sub-tree that's kDoNotPropagate, will

separately aggregate the parent portion and succeed or fail logical allocation of that portion,

then separately aggregate the kDoNotPropagate sub-tree and succeed or fail that portion. This

maximizes behavior simimlarity between a root with a kDoNotPropagate sub-tree and a

kDoNotPropagate sub-tree with a further kDoNotPropagate sub-tree.

Defined at line 63 of file ../../src/sysmem/server/node_properties.h

enum ConnectionVersion
Name Value
kNoConnection 0
kVersion1 1
kVersion2 2

Defined at line 77 of file ../../src/sysmem/server/node_properties.h

Records

Functions

  • LogCallback & GetDefaultLogCallback ()

    Defined at line 17 of file ../../src/sysmem/server/logging.cc

  • zx_status_t get_handle_koids (const zx::object_base & this_end, zx_koid_t * this_end_koid, zx_koid_t * that_end_koid, zx_obj_type_t type)

    Defined at line 16 of file ../../src/sysmem/server/koid_util.cc

  • template <class T>
    zx_koid_t get_koid (const zx::object<T> & object)

    Defined at line 23 of file ../../src/sysmem/server/koid_util.h

  • void vLogToCallback (::fuchsia_logging::LogSeverity severity, const char * file, int line, const char * prefix, const char * format, va_list args, const LogCallback & log_callback)

    Defined at line 26 of file ../../src/sysmem/server/logging.cc

  • void vLog (::fuchsia_logging::LogSeverity severity, const char * file, int line, const char * prefix, const char * format, va_list args)

    Defined at line 43 of file ../../src/sysmem/server/logging.cc

  • void Log (::fuchsia_logging::LogSeverity severity, const char * file, int line, const char * prefix, const char * format)

    Defined at line 48 of file ../../src/sysmem/server/logging.cc

  • std::string CreateUniqueName (const char * prefix)

    Creates a unique name by concatenating prefix and a 64-bit unique number.

    Defined at line 58 of file ../../src/sysmem/server/logging.cc

  • template <typename T>
    zx::unowned_channel GetUnownedChannel (const T & server_end)

    Defined at line 169 of file ../../src/sysmem/server/versions.h

  • template <typename T>
    zx::channel TakeChannel (T server_end)

    Defined at line 174 of file ../../src/sysmem/server/versions.h

  • template <typename T>
    NodeServerEnd TakeNodeServerEnd (T server_end)

    Defined at line 179 of file ../../src/sysmem/server/versions.h

  • fit::result<fit::failed, uint64_t> PaddedSizeFromBlockSize (const fuchsia_sysmem2::ImageFormatConstraints & image_format_constraintsuint64_t buffer_settings_size_bytesconst ComplainFunction & complain)

    See above for a rough algorithm justification / outline, and the pad_for_block_size_test.cc for

    unit tests.

    If you're considering making this a tighter upper bound, please be careful not to make it way

    more complicated or way slower. And warning, this can be a nerd snipe, so it may be best to walk

    away slowly.

    Defined at line 368 of file ../../src/sysmem/server/pad_for_block_size.cc