The Pedigree Project 0.1
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
TimerFd Class Referencefinal

#include <timerfd-syscalls.h>

+ Inheritance diagram for TimerFd:
+ Collaboration diagram for TimerFd:

Public Member Functions

 TimerFd (int clock)
 
int readToUser (void *buffer, size_t count, bool canBlock)
 
int readWithCopy (size_t count, bool canBlock, PosixDescriptorReadCopy copy, void *context)
 
ReadyMask queryReady ()
 
ReadinessGenerations readinessGenerations () override
 
MUST_USE_RESULT bool addDescriptorOwner ()
 
void removeDescriptorOwner ()
 
- Public Member Functions inherited from ReadinessSource
MUST_USE_RESULT bool subscribeReadiness (ReadyMask interest, const SharedPointer< ReadinessObserver > &observer, ReadinessSubscription &subscription)
 

Private Member Functions

 TimerFd (const TimerFd &)=delete
 
TimerFdoperator= (const TimerFd &)=delete
 
bool readable () const
 
Time::Timestamp now (const PosixClockSnapshot &clock) const
 
void update (const PosixClockSnapshot &clock)
 
uint64_t forward (PosixTimerState::State &state, Time::Timestamp current) const
 
void service (uint64_t generation)
 
void changed ()
 
int configure (int flags, Time::Timestamp value, Time::Timestamp interval, void *previous)
 
int getTime (void *value)
 

Private Attributes

Mutex m_Lock
 
ConditionVariable m_Readers
 
PosixTimerState::State m_State
 
ReadinessGenerations m_Generations
 
uint64_t m_Counter
 
uint64_t m_ClockGeneration
 
size_t m_DescriptorOwners
 
int m_Clock
 
bool m_Expired
 
bool m_CancelOnSet
 
bool m_CancelPending
 
bool m_CancelWake
 
bool m_AdmissionOpen
 

Friends

class TimerFdService
 
int posix_timerfd_settime (int, int, const void *, void *)
 
int posix_timerfd_gettime (int, void *)
 

Additional Inherited Members

- Protected Member Functions inherited from ReadinessSource
void notifyReadiness (ReadyMask mask)
 
void closeReadiness (ReadyMask mask=ReadyInvalid|ReadyHangup)
 

Detailed Description

Settings and unread expirations belong to the shared open description.

Definition at line 26 of file timerfd-syscalls.h.

Constructor & Destructor Documentation

◆ TimerFd()

TimerFd::TimerFd ( int  clock)
explicit

Definition at line 115 of file timerfd-syscalls.cc.

◆ ~TimerFd()

TimerFd::~TimerFd ( )
override

Definition at line 130 of file timerfd-syscalls.cc.

Member Function Documentation

◆ addDescriptorOwner()

bool TimerFd::addDescriptorOwner ( )

Definition at line 346 of file timerfd-syscalls.cc.

◆ changed()

void TimerFd::changed ( )
private

Definition at line 171 of file timerfd-syscalls.cc.

◆ configure()

int TimerFd::configure ( int  flags,
Time::Timestamp  value,
Time::Timestamp  interval,
void *  previous 
)
private

Definition at line 262 of file timerfd-syscalls.cc.

◆ forward()

uint64_t TimerFd::forward ( PosixTimerState::State state,
Time::Timestamp  current 
) const
private

Definition at line 160 of file timerfd-syscalls.cc.

◆ getTime()

int TimerFd::getTime ( void *  value)
private

Definition at line 307 of file timerfd-syscalls.cc.

◆ now()

Time::Timestamp TimerFd::now ( const PosixClockSnapshot clock) const
private

Definition at line 139 of file timerfd-syscalls.cc.

◆ queryReady()

ReadyMask TimerFd::queryReady ( )

Definition at line 334 of file timerfd-syscalls.cc.

◆ readable()

bool TimerFd::readable ( ) const
private

Definition at line 135 of file timerfd-syscalls.cc.

◆ readinessGenerations()

ReadinessGenerations TimerFd::readinessGenerations ( )
overridevirtual

Return source-serialized rising-edge sequences where available.

A source increments the corresponding sequence while holding the same lock which changes its readiness predicate. Consumers can then recover a drain/refill transition even if the two callback deliveries are reordered.

Reimplemented from ReadinessSource.

Definition at line 341 of file timerfd-syscalls.cc.

◆ readToUser()

int TimerFd::readToUser ( void *  buffer,
size_t  count,
bool  canBlock 
)

Definition at line 195 of file timerfd-syscalls.cc.

◆ readWithCopy()

int TimerFd::readWithCopy ( size_t  count,
bool  canBlock,
PosixDescriptorReadCopy  copy,
void *  context 
)

Definition at line 199 of file timerfd-syscalls.cc.

◆ removeDescriptorOwner()

void TimerFd::removeDescriptorOwner ( )

Definition at line 355 of file timerfd-syscalls.cc.

◆ service()

void TimerFd::service ( uint64_t  generation)
private

Definition at line 176 of file timerfd-syscalls.cc.

◆ update()

void TimerFd::update ( const PosixClockSnapshot clock)
private

Definition at line 143 of file timerfd-syscalls.cc.

Friends And Related Symbol Documentation

◆ posix_timerfd_gettime

int posix_timerfd_gettime ( int  ,
void *   
)
friend

Definition at line 418 of file timerfd-syscalls.cc.

◆ posix_timerfd_settime

int posix_timerfd_settime ( int  ,
int  ,
const void *  ,
void *   
)
friend

Definition at line 392 of file timerfd-syscalls.cc.

◆ TimerFdService

friend class TimerFdService
friend

Definition at line 39 of file timerfd-syscalls.h.

Member Data Documentation

◆ m_AdmissionOpen

bool TimerFd::m_AdmissionOpen
private

Definition at line 67 of file timerfd-syscalls.h.

◆ m_CancelOnSet

bool TimerFd::m_CancelOnSet
private

Definition at line 64 of file timerfd-syscalls.h.

◆ m_CancelPending

bool TimerFd::m_CancelPending
private

Definition at line 65 of file timerfd-syscalls.h.

◆ m_CancelWake

bool TimerFd::m_CancelWake
private

Definition at line 66 of file timerfd-syscalls.h.

◆ m_Clock

int TimerFd::m_Clock
private

Definition at line 62 of file timerfd-syscalls.h.

◆ m_ClockGeneration

uint64_t TimerFd::m_ClockGeneration
private

Definition at line 60 of file timerfd-syscalls.h.

◆ m_Counter

uint64_t TimerFd::m_Counter
private

Definition at line 59 of file timerfd-syscalls.h.

◆ m_DescriptorOwners

size_t TimerFd::m_DescriptorOwners
private

Definition at line 61 of file timerfd-syscalls.h.

◆ m_Expired

bool TimerFd::m_Expired
private

Definition at line 63 of file timerfd-syscalls.h.

◆ m_Generations

ReadinessGenerations TimerFd::m_Generations
private

Definition at line 58 of file timerfd-syscalls.h.

◆ m_Lock

Mutex TimerFd::m_Lock
private

Definition at line 55 of file timerfd-syscalls.h.

◆ m_Readers

ConditionVariable TimerFd::m_Readers
private

Definition at line 56 of file timerfd-syscalls.h.

◆ m_State

PosixTimerState::State TimerFd::m_State
private

Definition at line 57 of file timerfd-syscalls.h.


The documentation for this class was generated from the following files: