#include <nul/motherboard.h>
#include <nul/compiler.h>
#include <nul/capalloc.h>
#include <nul/baseprogram.h>
#include <sys/semaphore.h>
#include <host/hpet.h>
#include <host/rtc.h>
#include <nul/topology.h>
#include <nul/generic_service.h>
#include <nul/service_timer.h>
#include <service/lifo.h>
#include <service/time.h>
#include <nul/timer.h>
#include "host/simplehwioout.h"
Classes | |
class | ClockSyncInfo |
class | PerCpuTimerService |
struct | PerCpuTimerService::Timer |
struct | PerCpuTimerService::ClientData |
struct | PerCpuTimerService::RemoteSlot |
struct | PerCpuTimerService::PerCpu |
struct | PerCpuTimerService::WorkerMessage |
Defines | |
#define | MIN_TICKS_BETWEEN_HPET_WRAP 4 |
#define | MAX_HPET_READ_TIME 100000 |
#define | MAX_HPET_READ_TRIES 8 |
#define | HPET_ESTIMATION_TOLERANCE 100 |
#define | CPT_RESOLUTION /* 1 divided by */ (1U<<13) |
#define | CLIENTS ((1 << Config::MAX_CLIENTS_ORDER) + 32 + 10) |
#define | PIT_FREQ 1193180ULL |
#define | PIT_DEFAULT_PERIOD 1000ULL |
#define | PIT_IRQ 2 |
#define | PIT_PORT 0x40 |
Functions | |
PARAM (timer_hpet_legacy, default_force_hpet_legacy=true) | |
PARAM (timer_force_pit, default_force_pit=true) | |
PARAM (service_per_cpu_timer, unsigned cap_region=alloc_cap_region(1<< 12, 12);bool hpet_legacy=(argv[0]==~0U)?default_force_hpet_legacy:argv[0];bool force_pit=(argv[1]==~0U)?default_force_pit:argv[1];unsigned pit_period_us=(argv[2]==~0U)?PIT_DEFAULT_PERIOD:argv[2];PerCpuTimerService *h=new(16) PerCpuTimerService(mb, cap_region, 12, hpet_legacy, force_pit, pit_period_us);MessageHostOp msg(h,"/timer", reinterpret_cast< unsigned long >(StaticPortalFunc< PerCpuTimerService >::portal_func));msg.crd_t=Crd(cap_region, 12, DESC_TYPE_CAP).value();if(!cap_region||!mb.bus_hostop.send(msg)) Logging::panic("starting of timer service failed");,"service_per_cpu_timer:[hpet_force_legacy=0][,force_pit=0][,pit_period_us]") |
#define CLIENTS ((1 << Config::MAX_CLIENTS_ORDER) + 32 + 10) |
#define CPT_RESOLUTION /* 1 divided by */ (1U<<13) |
#define HPET_ESTIMATION_TOLERANCE 100 |
#define MAX_HPET_READ_TIME 100000 |
#define MAX_HPET_READ_TRIES 8 |
#define MIN_TICKS_BETWEEN_HPET_WRAP 4 |
#define PIT_DEFAULT_PERIOD 1000ULL |
#define PIT_FREQ 1193180ULL |
#define PIT_IRQ 2 |
#define PIT_PORT 0x40 |
PARAM | ( | service_per_cpu_timer | , | |
unsigned | cap_region = alloc_cap_region(1<< 12, 12);bool hpet_legacy=(argv[0]==~0U)?default_force_hpet_legacy:argv[0];bool force_pit=(argv[1]==~0U)?default_force_pit:argv[1];unsigned pit_period_us=(argv[2]==~0U)?PIT_DEFAULT_PERIOD:argv[2];PerCpuTimerService *h=new(16) PerCpuTimerService(mb, cap_region, 12, hpet_legacy, force_pit, pit_period_us);MessageHostOp msg(h,"/timer", reinterpret_cast< unsigned long >(StaticPortalFunc< PerCpuTimerService >::portal_func));msg.crd_t=Crd(cap_region, 12, DESC_TYPE_CAP).value();if(!cap_region||!mb.bus_hostop.send(msg)) Logging::panic("starting of timer service failed"); , |
|||
"service_per_cpu_timer:" | [hpet_force_legacy=0][, force_pit=0][, pit_period_us] | |||
) |
PARAM | ( | timer_force_pit | , | |
default_force_pit | = true | |||
) |
PARAM | ( | timer_hpet_legacy | , | |
default_force_hpet_legacy | = true | |||
) |