/* * \brief IPC message buffers * \author Martin Stein * \date 2012-01-03 */ /* * Copyright (C) 2012-2013 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #ifndef _INCLUDE__BASE__IPC_MSGBUF_H_ #define _INCLUDE__BASE__IPC_MSGBUF_H_ namespace Genode { /** * IPC message buffer layout */ class Msgbuf_base { protected: size_t _size; /* buffer size in bytes */ public: char buf[]; /* begin of actual message buffer */ /************************************************* ** 'buf' must be the last member of this class ** *************************************************/ /** * Return size of message buffer */ inline size_t size() const { return _size; } /** * Return address of message buffer */ inline void *addr() { return &buf[0]; } }; /** * Instance of IPC message buffer with specified buffer size * * 'Msgbuf_base' must be the last class this class inherits from. */ template class Msgbuf : public Msgbuf_base { public: /************************************************** ** 'buf' must be the first member of this class ** **************************************************/ char buf[BUF_SIZE]; /** * Constructor */ Msgbuf() { _size = BUF_SIZE; } }; } #endif /* _INCLUDE__BASE__IPC_MSGBUF_H_ */