1pub(crate) mod pit;
3mod tsc;
4pub use self::{
5 pit::{Pit, PitError, PIT},
6 tsc::Rdtsc,
7};
8pub use core::time::Duration;
9
10#[derive(Copy, Clone, Debug, Eq, PartialEq, thiserror::Error)]
12#[error("invalid duration {duration:?}: {message}")]
13pub struct InvalidDuration {
14 duration: Duration,
15 message: &'static str,
16}
17
18impl InvalidDuration {
21 #[must_use]
23 pub fn duration(self) -> Duration {
24 self.duration
25 }
26
27 #[must_use]
28 pub(crate) fn new(duration: Duration, message: &'static str) -> Self {
29 Self { duration, message }
30 }
31}