// EPOS-- CPU LLF Scheduler Abstraction Implementation

#include <scheduler.h>
#include <alarm.h>

__BEGIN_SYS

    Scheduling_Criteria::LLF::LLF(const RTC::Microsecond & d, const RTC::Microsecond & c) :Priority((Alarm::elapsed() + Alarm::ticks(d) - Alarm::ticks(c)) >> 8), _deadline(Alarm::ticks(d)), _wcet(Alarm::ticks(c)){}

    void Scheduling_Criteria::LLF::update(Timer::Tick _computation_start) {
	_computed_time += Alarm::elapsed() - _computation_start;
	_priority = (Alarm::elapsed() + _deadline - _wcet + _computed_time) >> 8;
    }

__END_SYS