[Tinyos-devel] Changing the TOS scheduler
Kevin Klues
klueska at gmail.com
Tue Jan 15 17:34:34 PST 2008
I've modified ncc to look for a -tosscheduler flag to which the string
intended for the -fnesc-scheduler flag can be passed.
If this flag isn't set, then the value passed through to
-fnesc-scheduler is equal to the default, i.e.
-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
If it is set, then -fnesc-scheduler is set to whatever gets passed in.
Valid additions to the code below:
In argument loop:
elsif (/^-tosscheduler=(.*)/) {
$scheduler = $1;
$strip = 1;
}
Further down...
if (!defined $scheduler) {
$scheduler = "TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask";
}
unshift @new_args, "-fnesc-scheduler=$scheduler";
If this seems reasonable and the right thing to do, I will go ahead
and remove the default definition of fnesc-scheduler from all the
.platform files and commit this change into ncc.in
This would of course require you to update your ncc installation (i.e.
in tinyos-2.x/tools) to get compiling code after the change is in
place.
Kevin
On Jan 14, 2008 2:30 PM, David Gay <dgay42 at gmail.com> wrote:
> On Jan 14, 2008 1:59 PM, Kevin Klues <klueska at gmail.com> wrote:
> > Hi all,
> >
> > I sent this email a while ago, but it was just before Christmas and it
> > probably slipped past most people's radars. Well I guess I got one
> > response, but I don't just want to change the implementation of a
> > component named TinySchedulerC, I want to change the name of this
> > component too. Here is my question again:
> >
> > Does it make sense to move fnesc-scheduler out of .platform and into
> > <platform>.target like so:
> > NESC_SCHEDULER_FLAG ?=
> > -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
> > PFLAGS += NESC_SCHEDULER_FLAG
> >
> > Currently, this flag is automatically set up with the default TinyOS
> > scheduler in the definition of the .platform file for each platform.
> > My question then is how to change the scheduler without modifying the
> > .platform file directly.
> >
> > I originally thought to add ' -fnesc-scheduler= ' to the PFLAGS
> > variable in my application Makefile, but the one defined in the
> > .platform file simply overrides it.
> >
> > Is there some other way to currently achieve the same result that I am
> > somehow not immediately seeing?
>
> I think it's a bad (very bad) idea to put flags necessary for correct
> compilation into the build system. Using the build system should not
> be a requirement.
>
> If you want to be able to change the scheduler component name, add an
> option to ncc and use that in the -fnesc-scheduler= options.
>
> FWIW, the -fnesc-scheduler= option should probably move into ncc.in,
> as it's the same on all 2.x platforms (I think it was in .platform as
> it was an easy way to get the 1.x/2.x difference in there, but there's
> already a 1.x vs 2.x test in ncc.in at the beginning where it
> differentiates between $TOSDIR/platform (1.x) and $TOSDIR/platforms
> (2.x))
>
> David
>
>
> David
>
--
~Kevin
More information about the Tinyos-devel
mailing list