Classes | Defines | Functions

base/apps/sigma0/service_per_cpu_timer.cc File Reference

#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 Documentation

#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

Function Documentation

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 
)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines