genode/repos/gems/include/ctf/timestamp.h
2022-08-17 12:03:26 +02:00

41 lines
1.0 KiB
C++

/*
* \brief Generic timestamp for CTF traces
* \author Johannes Schlatow
* \date 2021-08-04
*/
/*
* Copyright (C) 2021 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CTF__TIMESTAMP_H_
#define _CTF__TIMESTAMP_H_
#include <base/fixed_stdint.h>
#include <util/register.h>
namespace Ctf {
using namespace Genode;
/* generic fixed-width timestamp type for different Trace::Timestamp widths */
template <int PWIDTH>
struct _Timestamp : Register<64> {
static constexpr bool extended() { return PWIDTH < 64; }
/* define _PWIDTH to get a valid Extension Bitfield even for 64-bit */
enum { _PWIDTH = PWIDTH < 64 ? PWIDTH : 0 };
struct Base : Bitfield<0, PWIDTH> { };
struct Extension : Bitfield<_PWIDTH, 64-_PWIDTH> { };
};
typedef _Timestamp<sizeof(Trace::Timestamp)*8> Timestamp;
typedef uint64_t __attribute__((aligned(1))) Timestamp_base;
}
#endif /* _CTF__TIMESTAMP_H_ */