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