shithub: vmxsmp

ref: e0e889fb69a6d4d3f2332244ef4f79f900a66d84
dir: /fns.h/

View raw version
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
void virtio_start_workers(void);
int irr_pending(void);
void *mkseg(char *name, uintptr va, ulong size);
void rmseg(char *name);
extern int vmx_notehandler(void *, char *);
extern void vmx_cleanup_init(void);
extern void vmx_register_child(int pid);
void lapic_timer_init(void);
void ipi_send(int, int);
u32int lapic_divide_value(u32int);
void kbdreader(void*);
void pit_init(void);
void rtc_init(void);
void uartreader(void*);
void ioapic_irqline(int, int); 
 /* may already exist */


void pcisyncbars(void);
void lapic_write_tsc_deadline(uvlong val);
uvlong lapic_read_tsc_deadline(void);
void lapic_tsc_deadline_check(void);
void *emalloc(ulong);
void loadkernel(char *);
uvlong rget(char *);
void rpoke(char *, uvlong, int);
#define rset(a,b) rpoke(a,b,0)
void rsetsz(char *, uvlong, int);
uvlong rgetsz(char *, int);
void processexit(char *);
void pitadvance(void);
void rtcadvance(void);
void settimer(vlong targ);
void vmerror(char *, ...);
#pragma varargck argpos vmerror 1
#define vmdebug if(!debug) {} else vmerror
int ctl(char *, ...);
void registermmio(uvlong, uvlong, uvlong (*)(int, uvlong, uvlong));
void irqline(int, int);
void irqack(int);
void postexc(char *, vlong);
void vgaresize(void);
void uartinit(int, char *);
void sendnotif(void (*)(void *), void *);
PCIDev *mkpcidev(u32int, u32int, u32int, int);
PCIBar *mkpcibar(PCIDev *, u8int, u32int, u32int, void *, void *);
PCICap *mkpcicap(PCIDev *, u8int, u32int (*)(PCICap *, u8int), void(*)(PCICap *, u8int, u32int, u32int));
u32int allocbdf(void);
Region *regptr(u64int);
void *gptr(u64int, u64int);
void *gend(void *);
uintptr gpa(void *);
uintptr gavail(void *);
void pciirq(PCIDev *, int);
u32int iowhine(int, u16int, u32int, int, void *);
void elcr(u16int);
int mkvionet(char *);
int mkvioblk(char *); 
char* rcflush(int);
void i8042kick(void *);
#define GET8(p,n) (*((u8int*)(p)+(n)))
#define GET16(p,n) (*(u16int*)((u8int*)(p)+(n)))
#define GET32(p,n) (*(u32int*)((u8int*)(p)+(n)))
#define GET64(p,n) (*(u64int*)((u8int*)(p)+(n)))
#define PUT8(p,n,v) (*((u8int*)(p)+(n)) = (v))
#define PUT16(p,n,v) (*(u16int*)((u8int*)(p)+(n)) = (v))
#define PUT32(p,n,v) (*(u32int*)((u8int*)(p)+(n)) = (v))
#define PUT64(p,n,v) (*(u64int*)((u8int*)(p)+(n)) = (v))
u32int roundpow2(u32int);
u32int vgagetpal(u8int);
void vgasetpal(u8int, u32int);
uintptr vmemread(void *, uintptr, uintptr);
uintptr vmemwrite(void *, uintptr, uintptr);
int x86access(int, uintptr, int, uvlong*, int, int, TLB *);
u32int io(int, u16int, u32int, int);
int x86step(void);
uvlong nanosec(void);
void acpimktables(void);
void acpimktables_detailed(void);
void mpmktable(void);
void lapic_timer_start(void);
void lapic_write_initial_count(u32int);
void lapic_write_divide_config(u32int);
void lapic_write_lvt_timer(u32int);
u32int lapic_read_current_count(void); 
u64int hpet_read(u64int, int);
void hpet_write(u64int, u32int, int);
void ioapic_init(void);
void hpet_init(void);
void timers_init(void);
void ipiqueueinit(void);
void lapic_init_cpu();
void timers_advance(void);
void ioapic_set_irq(int, int);
void ioapic_irqline(int, int);
void pcidump(void);
void rcload(void);

/* pvclock.c */
void pvclock_init(void);
void pvclock_update(int cpu);
int pvclock_msr(int cpu, int write, u32int msr, u64int *val);

/* vmtime.c - Initialize VM timing - call after cached_tscoff is set */
void		vmtime_init(void);

/* Get current VM time in nanoseconds since boot (uses guest TSC) */
uvlong		vmtime_ns(void);

/* Get current guest TSC value (host_tsc - cached_tscoff) */
uvlong		vmtime_guest_tsc(void);

/* Get TSC frequency in Hz */
uvlong		vmtime_tsc_freq(void);

/* Get guest TSC value at VM boot */
uvlong		vmtime_guest_tsc_at_boot(void);

/* timer.c - TSC-deadline mode support */
void		lapic_write_tsc_deadline(uvlong val);
u64int		lapic_read_tsc_deadline(void);