Sound Open Firmware
Loading...
Searching...
No Matches
sof_uuid Struct Reference

UUID (Universally Unique IDentifier) structure. More...

#include <uuid.h>

Data Fields

uint32_t a
uint16_t b
uint16_t c
uint8_t d [8]

Detailed Description

UUID (Universally Unique IDentifier) structure.

Use DECLARE_SOF_UUID() to assigned UUID to the fw part (component implementation, dai implementation, ...).

Use SOF_UUID() to store an address of declared UUID.

See existing implementation of components and dais for examples how to UUIDs are declared and assigned to the drivers to provide identification of the source for their log entries.

UUID for a new component may be generated with uuidgen Linux tool, part of the util-linux package.

FIXME: this struct scheme has an endianness bug. On BE systems, the same initialier for the a/b/c fields will produce different memory layout than on LE systems. Within C code, that's fine, but when compared with external representations (c.f. topology) that pass UUIDs as a linear array of bytes, only one endianness will work. If SOF ever ships on a BE system all use of sof_uuid will need to be modified to byte swap the a/b/c values.

Some identifiers are taken from the module manifest. Since the module manifest structure (sof_man_module) is marked as packed, the pointer to the sof_uuid structure may not be properly aligned. To avoid possible problems with accessing fields of this structure from unaligned addresses, it has been marked as packed.

Field Documentation

◆ a

uint32_t sof_uuid::a

◆ b

uint16_t sof_uuid::b

◆ c

uint16_t sof_uuid::c

◆ d

uint8_t sof_uuid::d[8]

The documentation for this struct was generated from the following file:
  • /home/lrg/work/sof-dox-work/src/include/sof/lib/uuid.h