OPAL Console calls ================== There are four OPAL calls relating to the OPAL console: +---------------------------------------------+--------------+------------------------+----------+-----------------+ | Name | API Token ID | Introduced | Required | Notes | | | | | as of | | +---------------------------------------------+--------------+------------------------+----------+-----------------+ | :ref:`OPAL_CONSOLE_WRITE` | 1 | v1.0 (Initial Release) | POWER8 | | +---------------------------------------------+--------------+------------------------+----------+-----------------+ | :ref:`OPAL_CONSOLE_READ` | 2 | v1.0 (Initial Release) | POWER8 | | +---------------------------------------------+--------------+------------------------+----------+-----------------+ | :ref:`OPAL_CONSOLE_WRITE_BUFFER_SPACE` | 25 | v1.0 (Initial Release) | POWER8 | | +---------------------------------------------+--------------+------------------------+----------+-----------------+ | :ref:`OPAL_CONSOLE_FLUSH` | 117 | :ref:`skiboot-5.1.13` | POWER9 | | +---------------------------------------------+--------------+------------------------+----------+-----------------+ The OPAL console calls can support multiple consoles. Each console MUST be represented in the device tree. A conforming implementation SHOULD have at least one console. It is valid for it to simply be an in-memory buffer and only support writing. [TODO: details on device tree specs for console] .. _OPAL_CONSOLE_WRITE: OPAL_CONSOLE_WRITE ------------------ Parameters: :: int64_t term_number int64_t *length, const uint8_t *buffer Returns: - :ref:`OPAL_SUCCESS` - :ref:`OPAL_PARAMETER` on invalid term_number - :ref:`OPAL_CLOSED` if console device closed - :ref:`OPAL_BUSY_EVENT` if unable to write any of buffer ``term_number`` is the terminal number as represented in the device tree. ``length`` is a pointer to the length of buffer. A conforming implementation SHOULD try to NOT do partial writes, although partial writes and not writing anything are valid. .. _OPAL_CONSOLE_WRITE_BUFFER_SPACE: OPAL_CONSOLE_WRITE_BUFFER_SPACE ------------------------------- Parameters: :: int64_t term_number int64_t *length Returns: - :ref:`OPAL_SUCCESS` - :ref:`OPAL_PARAMETER` on invalid term_number Returns the available buffer length for OPAL_CONSOLE_WRITE in ``length``. This call can be used to help work out if there is sufficient buffer space to write your full message to the console with OPAL_CONSOLE_WRITE. .. _OPAL_CONSOLE_READ: OPAL_CONSOLE_READ ----------------- Parameters: :: int64_t term_number int64_t *length uint8_t *buffer Returns: - :ref:`OPAL_SUCCESS` - :ref:`OPAL_PARAMETER` on invalid term_number - :ref:`OPAL_CLOSED` Use :ref:`OPAL_POLL_EVENTS` for how to determine .. _OPAL_CONSOLE_FLUSH: OPAL_CONSOLE_FLUSH ------------------ Parameters: :: int64_t term_number Returns: - :ref:`OPAL_SUCCESS` - :ref:`OPAL_UNSUPPORTED` if the console does not implement a flush call - :ref:`OPAL_PARAMETER` on invalid term_number - :ref:`OPAL_PARTIAL` if more to flush, call again - :ref:`OPAL_BUSY` if nothing was flushed this call