From 67a8d367109c52518f754980d2b23100ca4fd051 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Thu, 1 May 2008 11:24:14 -0400 Subject: LITMUS: let plugins declare their willingness to allow synchronization - don't let SRP be active under GSN-EDF - later, don't let FMLP be active under PFAIR, either --- include/litmus/sched_plugin.h | 12 ++++++++++++ litmus/sched_gsn_edf.c | 1 + litmus/sched_psn_edf.c | 2 ++ 3 files changed, 15 insertions(+) diff --git a/include/litmus/sched_plugin.h b/include/litmus/sched_plugin.h index 421c54f517..872a7cbff3 100644 --- a/include/litmus/sched_plugin.h +++ b/include/litmus/sched_plugin.h @@ -85,6 +85,8 @@ struct sched_plugin { struct list_head list; /* basic info */ char *plugin_name; + unsigned int srp_active; + unsigned int fmlp_active; /* scheduler invocation */ scheduler_tick_t tick; @@ -115,4 +117,14 @@ int register_sched_plugin(struct sched_plugin* plugin); struct sched_plugin* find_sched_plugin(const char* name); int print_sched_plugins(char* buf, int max); +static inline int srp_active(void) +{ + return litmus->srp_active; +} + +static inline int fmlp_active(void) +{ + return litmus->fmlp_active; +} + #endif diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c index 6d9539cc0b..5dcc250aa6 100644 --- a/litmus/sched_gsn_edf.c +++ b/litmus/sched_gsn_edf.c @@ -695,6 +695,7 @@ static long gsnedf_admit_task(struct task_struct* tsk) /* Plugin object */ static struct sched_plugin gsn_edf_plugin __cacheline_aligned_in_smp = { .plugin_name = "GSN-EDF", + .fmlp_active = 1, .finish_switch = gsnedf_finish_switch, .tick = gsnedf_tick, .task_new = gsnedf_task_new, diff --git a/litmus/sched_psn_edf.c b/litmus/sched_psn_edf.c index 7fb61ff75a..d4d01789b0 100644 --- a/litmus/sched_psn_edf.c +++ b/litmus/sched_psn_edf.c @@ -436,6 +436,8 @@ static long psnedf_admit_task(struct task_struct* tsk) /* Plugin object */ static struct sched_plugin psn_edf_plugin __cacheline_aligned_in_smp = { .plugin_name = "PSN-EDF", + .fmlp_active = 1, + .srp_active = 1, .tick = psnedf_tick, .task_new = psnedf_task_new, .complete_job = complete_job, -- cgit v1.2.2