Preemptive uniprocessor scheduling of mixed-criticality sporadic task systems