25#include <l4/sys/cxx/ipc_legacy>
26#include <l4/cxx/minmax>
28namespace L4Re {
namespace Util {
46template<
typename SVR >
63 this_vcon()->vcon_write(
reinterpret_cast<char const *
>(&m->
mr[2]),
73 return l4_msgtag(this_vcon()->vcon_set_attr(attr), 0, 0, 0);
78 return l4_msgtag(this_vcon()->vcon_get_attr(attr), 4, 0, 0);
88 unsigned size = cxx::min<unsigned>(op >> 16, max_size);
98 __builtin_memcpy(&m->
mr[1], buf, bytes);
103 unsigned vcon_read(
char *buf,
unsigned size)
noexcept;
104 void vcon_write(
const char *buf,
unsigned size)
noexcept;
114 SVR
const *this_vcon()
const {
return static_cast<SVR
const *
>(
this); }
115 SVR *this_vcon() {
return static_cast<SVR *
>(
this); }
Console server template class.
C++ L4 Vcon interface, see Virtual Console for the C interface.
unsigned long l4_umword_t
Unsigned machine word.
@ L4_EINVAL
Invalid argument.
unsigned l4_bytes_to_mwords(unsigned size) L4_NOTHROW
Determine how many machine words (l4_umword_t) are required to store a buffer of 'size' bytes.
l4_msgtag_t l4_msgtag(long label, unsigned words, unsigned items, unsigned flags) L4_NOTHROW
Create a message tag from the specified values.
@ L4_VCON_GET_ATTR_OP
Set console attributes.
@ L4_VCON_SET_ATTR_OP
Get console attributes.
l4_msg_regs_t * l4_utcb_mr(void) L4_NOTHROW L4_PURE
Get the message-register block of a UTCB.
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
Common L4 ABI Data Types.
int Opcode
Data type for RPC opcodes.
Message tag data structure.
unsigned words() const L4_NOTHROW
Get the number of untyped words.
Vcon attribute structure.
l4_umword_t i_flags
input flags
l4_umword_t o_flags
output flags
l4_umword_t l_flags
local flags
Encapsulation of the message-register block in the UTCB.
l4_umword_t mr[L4_UTCB_GENERIC_DATA_SIZE]
Message registers.
@ L4_VCON_READ_STAT_DONE
Done condition flag.
@ L4_VCON_READ_SIZE_MASK
Size mask.
C++ Virtual console interface.