57 lines
1.4 KiB
C
57 lines
1.4 KiB
C
/**
|
|
* \file
|
|
* \brief Kernel scheduling API
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2007, 2008, 2010, ETH Zurich.
|
|
* All rights reserved.
|
|
*
|
|
* This file is distributed under the terms in the attached LICENSE file.
|
|
* If you do not find this file, copies can be found by writing to:
|
|
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
|
|
*/
|
|
|
|
#ifndef KERNEL_SCHEDULE_H
|
|
#define KERNEL_SCHEDULE_H
|
|
|
|
/* Return the DCB to dispatch. */
|
|
struct dcb *schedule(void);
|
|
|
|
/* Unblock a dispatcher - insert into scheduler queue. */
|
|
/* scheduler_add() */
|
|
void make_runnable(struct dcb *dcb);
|
|
|
|
/* Break RBED by setting release time of this DCB to *now*. */
|
|
/* schedule(r) */
|
|
void schedule_now(struct dcb *dcb);
|
|
|
|
/**
|
|
* \brief Remove 'dcb' from scheduler ring.
|
|
*
|
|
* Removes dispatcher 'dcb' from the scheduler ring. If it was not in
|
|
* the ring, this function is a no-op. The postcondition for this
|
|
* function is that dcb is not in the ring.
|
|
*
|
|
* \param dcb Pointer to DCB to remove.
|
|
|
|
* Opposite of make_runnable.
|
|
*/
|
|
void scheduler_remove(struct dcb *dcb);
|
|
|
|
/* Yield. */
|
|
void scheduler_yield(struct dcb *dcb);
|
|
|
|
/* Coreboot stuff from here on. */
|
|
|
|
/* Kernel has rebooted, start scheduling from scratch. */
|
|
void scheduler_reset_time(void);
|
|
|
|
/* Convert scheduler parameters to the current scheduler for the whole KCB. */
|
|
void scheduler_convert(void);
|
|
|
|
/* Necessary? Calls reset_time. */
|
|
void scheduler_restore_state(void);
|
|
|
|
#endif
|