blob: 6d6c0ff03b9c1b2364247545992ed92cac14dfa6 [file] [log] [blame]
OPAL Console calls
==================
There are four OPAL calls relating to the OPAL console: ::
#define OPAL_CONSOLE_WRITE 1
#define OPAL_CONSOLE_READ 2
#define OPAL_CONSOLE_WRITE_BUFFER_SPACE 25
#define OPAL_CONSOLE_FLUSH 117
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
------------------
Parameters: ::
int64_t term_number
int64_t *length,
const uint8_t *buffer
Returns: ::
OPAL_SUCCESS
OPAL_PARAMETER - invalid term_number
OPAL_CLOSED - console device closed
OPAL_BUSY_EVENT - 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
-------------------------------
Parameters: ::
int64_t term_number
int64_t *length
Returns: ::
OPAL_SUCCESS
OPAL_PARAMETER - 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
-----------------
Parameters: ::
int64_t term_number
int64_t *length
uint8_t *buffer
Returns: ::
OPAL_SUCCESS
OPAL_PARAMETER - invalid term_number
OPAL_CLOSED
Use OPAL_POLL_EVENTS for how to determine
OPAL_CONSOLE_FLUSH
------------------
Parameters: ::
int64_t term_number
Returns: ::
OPAL_SUCCESS
OPAL_UNSUPPORTED - the console does not implement a flush call
OPAL_PARAMETER - invalid term_number
OPAL_PARTIAL - more to flush, call again
OPAL_BUSY - nothing was flushed this call