They are expected to be implemented by the underlying platform.
int *bmk_sched_geterrno(void);
const char *bmk_sched_threadname(struct bmk_thread *);
-bmk_time_t bmk_clock_monotonic(void);
-bmk_time_t bmk_clock_epochoffset(void);
-
/* XXX: coming up with better names considered useful */
void bmk_cpu_sched_bouncer(void);
void bmk__cpu_switch(void *, void *);
+
+bmk_time_t bmk_platform_clock_monotonic(void);
+bmk_time_t bmk_platform_clock_epochoffset(void);
+
void bmk_platform_cpu_sched_switch(struct bmk_tcb *, struct bmk_tcb *);
#endif /* _BMK_CORE_SCHED_H_ */
bmk_time_t tm, wakeup;
/* block domain for max 1s */
- tm = bmk_clock_monotonic();
+ tm = bmk_platform_clock_monotonic();
wakeup = tm + 1*1000*1000*1000ULL;
next = NULL;
bmk_sched_nanosleep(bmk_time_t nsec)
{
- return bmk_sched_nanosleep_abstime(nsec + bmk_clock_monotonic());
+ return bmk_sched_nanosleep_abstime(nsec
+ + bmk_platform_clock_monotonic());
}
void
{
bmk_time_t time;
- time = bmk_clock_monotonic();
+ time = bmk_platform_clock_monotonic();
switch (which) {
case RUMPUSER_CLOCK_RELWALL:
- time += bmk_clock_epochoffset();
+ time += bmk_platform_clock_epochoffset();
break;
case RUMPUSER_CLOCK_ABSMONO:
break;
TAILQ_INSERT_TAIL(wh, &w, entries);
w.onlist = 1;
if (nsec != WAIT_NOTIMEOUT)
- wakeup = bmk_clock_monotonic() + nsec;
+ wakeup = bmk_platform_clock_monotonic() + nsec;
bmk_sched_block_timeout(w.who, wakeup);
bmk_sched();
bmk_time_t nsecs = ts->tv_sec*1000*1000*1000 + ts->tv_nsec;
if (flags & TIMER_ABSTIME) {
- nsecs -= bmk_clock_epochoffset();
+ nsecs -= bmk_platform_clock_epochoffset();
rv = bmk_sched_nanosleep_abstime(nsecs);
} else {
rv = bmk_sched_nanosleep(nsecs);
#include <bmk-core/sched.h>
bmk_time_t
-bmk_clock_monotonic(void)
+bmk_platform_clock_monotonic(void)
{
return bmk_cpu_clock_now();
}
bmk_time_t
-bmk_clock_epochoffset(void)
+bmk_platform_clock_epochoffset(void)
{
return 0; /* needs more bits */
/* return monotonic clock offset to wall epoch */
bmk_time_t
-bmk_clock_epochoffset(void)
+bmk_platform_clock_epochoffset(void)
{
struct timespec myts;
#include <bmk-core/sched.h>
bmk_time_t
-bmk_clock_monotonic(void)
+bmk_platform_clock_monotonic(void)
{
return minios_clock_monotonic();