* [patch][rfa] Add "active" pin to sid-sched
@ 2003-08-29 16:09 Dave Brolley
2003-08-29 16:16 ` Frank Ch. Eigler
0 siblings, 1 reply; 5+ messages in thread
From: Dave Brolley @ 2003-08-29 16:09 UTC (permalink / raw)
To: sid
[-- Attachment #1: Type: text/plain, Size: 411 bytes --]
Hi,
This patch adds an output pin, "active" to the sid-sched component which
indicates when the scheduler is running. That is, when "enable?" is
greater than or equal to "enable-threshold". This pin is driven with 0
when the scheduler is inactive and with 1 when it is active. This pin
can be used by components which may need to change state depending on
the state of the scheduler.
OK to commit?
Dave
[-- Attachment #2: sid-sched-active.ChangeLog --]
[-- Type: text/plain, Size: 477 bytes --]
2003-08-29 Dave Brolley <brolley@redhat.com>
* compSched.cxx (operator <<): Stream active_p and active_pin.
(operator >>): Ditto.
(active_p): New member of scheduler_component.
(active_pin): Ditto.
(advance): Drive active_pin with 1 or 0 as the enable
threshold is crossed.
(scheduler_component): Initialize active_p. Add "active_pin".
(sid-sched.xml): Document "active" pin and interaction between
"enabled?" and "enable-threshold".
(sid-sched.txt): Regenerated.
[-- Attachment #3: sid-sched-active.patch.txt --]
[-- Type: text/plain, Size: 11808 bytes --]
Index: sid/component/sched/compSched.cxx
===================================================================
RCS file: /cvs/src/src/sid/component/sched/compSched.cxx,v
retrieving revision 1.9
diff -c -p -r1.9 compSched.cxx
*** sid/component/sched/compSched.cxx 6 Feb 2003 20:29:20 -0000 1.9
--- sid/component/sched/compSched.cxx 29 Aug 2003 16:02:54 -0000
*************** operator << (ostream& o, const scheduler
*** 1215,1224 ****
--- 1215,1226 ----
o << "scheduler-state "
<< it.enable_threshold << " "
<< it.enable_p << " "
+ << it.active_p << " "
<< it.yield_host_time_threshold << " "
<< it.yield_host_time_p << " "
<< it.sched.step_cycle_limit << " " // this is a component attribute
<< it.advance_count << " "
+ << it.active_pin << " "
<< it.yield_pin << " "
<< it.advance_pin << endl;
*************** operator >> (istream& i, scheduler_compo
*** 1260,1269 ****
--- 1262,1273 ----
{
i >> it.enable_threshold
>> it.enable_p
+ >> it.active_p
>> it.yield_host_time_threshold
>> it.yield_host_time_p
>> it.sched.step_cycle_limit
>> it.advance_count
+ >> it.active_pin
>> it.yield_pin
>> it.advance_pin;
*************** class scheduler_component: public schedu
*** 1333,1344 ****
--- 1337,1350 ----
int enable_p;
int yield_host_time_threshold;
int yield_host_time_p;
+ bool active_p;
host_int_8 advance_count;
callback_pin<this_t> advance_pin;
callback_pin<this_t> time_query_pin;
callback_pin<this_t> yield_pin;
output_pin time_low_pin;
output_pin time_high_pin;
+ output_pin active_pin;
public:
*************** protected:
*** 1392,1400 ****
--- 1398,1422 ----
<< " yield_host_time_threshold=="
<< this->yield_host_time_threshold << endl;
#endif
+ // Drive the active pin if the threshold has been crossed.
+ if (UNLIKELY(! this->active_p))
+ {
+ this->active_pin.drive (1);
+ this->active_p = true;
+ }
+
this->advance_count ++;
this->sched.advance (this->yield_host_time_p >= this->yield_host_time_threshold);
}
+ else
+ {
+ // Drive the active pin if the threshold has been crossed.
+ if (UNLIKELY(this->active_p))
+ {
+ this->active_pin.drive (0);
+ this->active_p = false;
+ }
+ }
}
*************** public:
*** 1431,1436 ****
--- 1453,1459 ----
clients(0),
num_clients(0),
enable_threshold(1),
+ active_p (false),
enable_p(1),
yield_host_time_threshold(1),
yield_host_time_p(0),
*************** scheduler_component<Scheduler>::schedule
*** 1457,1462 ****
--- 1480,1486 ----
add_pin ("time-high", & this->time_high_pin);
add_pin ("time-low", & this->time_low_pin);
add_pin ("yield", & this->yield_pin);
+ add_pin ("active", & this->active_pin);
add_attribute ("yield", & this->yield_pin, "pin");
add_attribute ("enable-threshold", & this->enable_threshold, "setting");
add_attribute ("enabled?", & this->enable_p, "setting");
Index: sid/component/sched/sid-sched.txt
===================================================================
RCS file: /cvs/src/src/sid/component/sched/sid-sched.txt,v
retrieving revision 1.5
diff -c -p -r1.5 sid-sched.txt
*** sid/component/sched/sid-sched.txt 8 Jan 2003 03:42:16 -0000 1.5
--- sid/component/sched/sid-sched.txt 29 Aug 2003 16:02:56 -0000
*************** Functionality:
*** 148,154 ****
| | driving the N-event output pins |
| | with some value. A counter |
| | accessed by the advance-count |
! | | attribute is incremented. |
| | |
| | Whether any particular N-event |
| | pin is driven depends on the |
--- 148,167 ----
| | driving the N-event output pins |
| | with some value. A counter |
| | accessed by the advance-count |
! | | attribute is incremented. If |
! | | the attribute enabled? has been |
! | | changed from a value below |
! | | enable-threshold to a value |
! | | greater than or equal to |
! | | enable-threshold, then the pin |
! | | active will be driven with the |
! | | value 1. If the attribute |
! | | enabled? has been changed from |
! | | a value grater than or equal to |
! | | enable-threshold to a value |
! | | less than enable-threshold, |
! | | then the pin active will be |
! | | driven with the value 0. |
| | |
| | Whether any particular N-event |
| | pin is driven depends on the |
*************** Component Reference:
*** 245,250 ****
--- 258,265 ----
|----------+---------+---------------+------------|
|yield |in |any |advancing |
|----------+---------+---------------+------------|
+ |active |out |boolean |advancing |
+ |----------+---------+---------------+------------|
|N-event |out |no value |advancing |
|----------+---------+---------------+------------|
|N-control |in |coded value |subscription|
*************** Component Reference:
*** 288,296 ****
|-------------------------+--------+--------+----------------+-------------||
|yield |pin |- |- |advancing ||
|-------------------------+--------+--------+----------------+-------------||
! |enable-theshold |setting |numeric |'1' |advancing ||
|-------------------------+--------+--------+----------------+-------------||
! |enabled? |setting |numeric |enable-threshold|advancing ||
|-------------------------+--------+--------+----------------+-------------||
|yield-host-time-threshold|setting |numeric |'1' |timing ||
|-------------------------+--------+--------+----------------+-------------||
--- 303,311 ----
|-------------------------+--------+--------+----------------+-------------||
|yield |pin |- |- |advancing ||
|-------------------------+--------+--------+----------------+-------------||
! |enabled? |setting |numeric |'1' |advancing ||
|-------------------------+--------+--------+----------------+-------------||
! |enable-threshold |setting |numeric |'1' |advancing ||
|-------------------------+--------+--------+----------------+-------------||
|yield-host-time-threshold|setting |numeric |'1' |timing ||
|-------------------------+--------+--------+----------------+-------------||
Index: sid/component/sched/sid-sched.xml
===================================================================
RCS file: /cvs/src/src/sid/component/sched/sid-sched.xml,v
retrieving revision 1.4
diff -c -p -r1.4 sid-sched.xml
*** sid/component/sched/sid-sched.xml 8 Jan 2003 03:42:16 -0000 1.4
--- sid/component/sched/sid-sched.xml 29 Aug 2003 16:02:56 -0000
***************
*** 8,13 ****
--- 8,14 ----
<!-- pins -->
<defpin name="advance" direction="in" legalvalues="any" behaviors="advancing" />
<defpin name="yield" direction="in" legalvalues="any" behaviors="advancing" />
+ <defpin name="active" direction="out" legalvalues="boolean" behaviors="advancing" />
<defpin name="N-event" direction="out" legalvalues="no value" behaviors="advancing" />
<defpin name="N-control" direction="in" legalvalues="coded value" behaviors="subscription" />
<defpin name="time-query" direction="in" legalvalues="any" behaviors="timing" />
***************
*** 26,33 ****
<defattribute name="N-control" category="pin" behaviors="subscription" />
<defattribute name="advance" category="pin" behaviors="advancing" />
<defattribute name="yield" category="pin" behaviors="advancing" />
! <defattribute name="enable-theshold" category="setting" legalvalues="numeric" defaultvalue="'1'" behaviors="advancing" />
! <defattribute name="enabled?" category="setting" legalvalues="numeric" defaultvalue="enable-threshold" behaviors="advancing" />
<defattribute name="yield-host-time-threshold" category="setting" legalvalues="numeric" defaultvalue="'1'" behaviors="timing" />
<defattribute name="yield-host-time?" category="setting" legalvalues="numeric" defaultvalue="'0'" behaviors="timing" />
<defattribute name="step-cycle-limit" category="setting" legalvalues="numeric" defaultvalue="advancing" />
--- 27,34 ----
<defattribute name="N-control" category="pin" behaviors="subscription" />
<defattribute name="advance" category="pin" behaviors="advancing" />
<defattribute name="yield" category="pin" behaviors="advancing" />
! <defattribute name="enable-threshold" category="setting" legalvalues="numeric" defaultvalue="'1'" behaviors="advancing" />
! <defattribute name="enabled?" category="setting" legalvalues="numeric" defaultvalue="'1'" behaviors="advancing" />
<defattribute name="yield-host-time-threshold" category="setting" legalvalues="numeric" defaultvalue="'1'" behaviors="timing" />
<defattribute name="yield-host-time?" category="setting" legalvalues="numeric" defaultvalue="'0'" behaviors="timing" />
<defattribute name="step-cycle-limit" category="setting" legalvalues="numeric" defaultvalue="advancing" />
***************
*** 136,149 ****
<behavior name="advancing">
<p> When you have disabled the scheduler by setting the
! <attribute>enabled?</attribute> attribute to a value less than enable-threshold,
advancing as described below, does not occur.
</p>
<p> Whenever the <pin>advance</pin> input pin is driven, the scheduler
may dispatch one or more signals by driving the <pin>N-event</pin> output
pins with some value. A counter accessed by the <attribute>advance-count</attribute>
! attribute is incremented.
</p>
<p> Whether any particular <pin>N-event</pin> pin is driven depends on
--- 137,157 ----
<behavior name="advancing">
<p> When you have disabled the scheduler by setting the
! <attribute>enabled?</attribute> attribute to a value less than enable-threshold,
advancing as described below, does not occur.
</p>
<p> Whenever the <pin>advance</pin> input pin is driven, the scheduler
may dispatch one or more signals by driving the <pin>N-event</pin> output
pins with some value. A counter accessed by the <attribute>advance-count</attribute>
! attribute is incremented. If the attribute <attribute>enabled?</attribute> has
! been changed from a value below <attribute>enable-threshold</attribute> to a value
! greater than or equal to <attribute>enable-threshold</attribute>, then the pin
! <pin>active</pin> will be driven with the value 1. If the attribute
! <attribute>enabled?</attribute> has been changed from a value grater than or equal to
! <attribute>enable-threshold</attribute> to a value less than
! <attribute>enable-threshold</attribute>, then the pin
! <pin>active</pin> will be driven with the value 0.
</p>
<p> Whether any particular <pin>N-event</pin> pin is driven depends on
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch][rfa] Add "active" pin to sid-sched
2003-08-29 16:09 [patch][rfa] Add "active" pin to sid-sched Dave Brolley
@ 2003-08-29 16:16 ` Frank Ch. Eigler
2003-08-29 19:44 ` Dave Brolley
0 siblings, 1 reply; 5+ messages in thread
From: Frank Ch. Eigler @ 2003-08-29 16:16 UTC (permalink / raw)
To: Dave Brolley; +Cc: sid
[-- Attachment #1: Type: text/plain, Size: 563 bytes --]
Hi -
> [...]
> OK to commit?
Looks fine to commit, though please consider not using a new
"active_p" member variable in order to send edges on the active
pin. This can be done by replacing ...
> + // Drive the active pin if the threshold has been crossed.
> + if (UNLIKELY(! this->active_p))
> + {
> + this->active_pin.drive (1);
> + this->active_p = true;
> + }
> +
with
if (this->active_pin.sense() != 1)
this->active_pin->drive(1);
and a corresponding change for the 0 transition.
- FChE
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch][rfa] Add "active" pin to sid-sched
2003-08-29 16:16 ` Frank Ch. Eigler
@ 2003-08-29 19:44 ` Dave Brolley
2003-08-29 19:47 ` Frank Ch. Eigler
0 siblings, 1 reply; 5+ messages in thread
From: Dave Brolley @ 2003-08-29 19:44 UTC (permalink / raw)
To: Frank Ch. Eigler; +Cc: sid
Frank Ch. Eigler wrote:
>Looks fine to commit, though please consider not using a new
>"active_p" member variable in order to send edges on the active
>pin. This can be done by replacing ...
>
>
>
>>+ // Drive the active pin if the threshold has been crossed.
>>+ if (UNLIKELY(! this->active_p))
>>+ {
>>+ this->active_pin.drive (1);
>>+ this->active_p = true;
>>+ }
>>+
>>
>>
>
>with
> if (this->active_pin.sense() != 1)
> this->active_pin->drive(1);
>
>and a corresponding change for the 0 transition.
>
>
This doesn't work because active_pin is an output_pin.
Dave
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch][rfa] Add "active" pin to sid-sched
2003-08-29 19:44 ` Dave Brolley
@ 2003-08-29 19:47 ` Frank Ch. Eigler
2003-08-29 20:23 ` Dave Brolley
0 siblings, 1 reply; 5+ messages in thread
From: Frank Ch. Eigler @ 2003-08-29 19:47 UTC (permalink / raw)
To: Dave Brolley; +Cc: sid
[-- Attachment #1: Type: text/plain, Size: 192 bytes --]
Hi -
> >[...]
> > if (this->active_pin.sense() != 1)
> > this->active_pin->drive(1);
> >[...]
> This doesn't work because active_pin is an output_pin.
Sorry, s/sense/recall/g.
- FChE
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch][rfa] Add "active" pin to sid-sched
2003-08-29 19:47 ` Frank Ch. Eigler
@ 2003-08-29 20:23 ` Dave Brolley
0 siblings, 0 replies; 5+ messages in thread
From: Dave Brolley @ 2003-08-29 20:23 UTC (permalink / raw)
To: Frank Ch. Eigler; +Cc: sid
Done and committed.
Frank Ch. Eigler wrote:
>Hi -
>
>
>
>>>[...]
>>> if (this->active_pin.sense() != 1)
>>> this->active_pin->drive(1);
>>>[...]
>>>
>>>
>>This doesn't work because active_pin is an output_pin.
>>
>>
>
>Sorry, s/sense/recall/g.
>
>- FChE
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-08-29 20:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-29 16:09 [patch][rfa] Add "active" pin to sid-sched Dave Brolley
2003-08-29 16:16 ` Frank Ch. Eigler
2003-08-29 19:44 ` Dave Brolley
2003-08-29 19:47 ` Frank Ch. Eigler
2003-08-29 20:23 ` Dave Brolley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).