Initialize the qtime data structure in the system page.
#include "board_startup.h" void init_qtime (void)
None.
This function initializes the system page's qtime data structure. Initializations this function performs can include:
For many x86 platforms, the generic function works. For ARM platforms, board-specific functions are often required.
The following example is a init_qtime() function for the fictitious ARM DK Elsinore Ghost 8 board:
#include "elsinore_startup.h" extern unsigned armv7gt_cntfrq; extern unsigned armv7gt_irq; void init_qtime_ghost8() { struct qtime_entry qtime; if (fdt_qtime(&qtime) == 0) { armv7gt_cntfrq = qtime.cycles_per_sec; armv7gt_irq = qtime.intr; } init_qtime_v7gt(); }
The following example is a generic init_qtime() function x86 boards:
#include "startup.h" /* By default we continue to use the 8254 timer as the system clock. However, * if the 'use_hpet_timer' flag is set we use the higher resolution HPET0 as * the system clock. * Startups have 2 choices for accomplishing that. They can set the * 'use_hpet_timer' flag in their main() and continue to call init_qtime(), or * they can call init_qtime_hpet() directly. Continuing to call init_qtime() * provides for a fallback to the 8254. startup-x86 uses the 'use_hpet_timer' * flag so that the startup specific -z option will revert to using the 8254. */ unsigned use_hpet_timer = 0; void init_qtime() { struct qtime_entry *qtime = alloc_qtime(); // ensure this is done once if (!use_hpet_timer || (init_qtime_hpet(qtime) != 0)) { init_qtime_8254(qtime); } }