RCS file: /usr1/CVS/rtems/cpukit/rtems/ChangeLog,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
|
|
|
| 1 | 2000-09-29 Stephan Merker <merker@decrc.abb.de> |
| 2 | |
| 3 | * include/rtems/rtems/ratemon.h, src/ratemonperiod.c, |
| 4 | src/ratemontimeout.c: Add next_length field so period length |
| 5 | can be changed by the the sequence period(X), period(not X) |
| 6 | with no intervening cancel or expiration. |
| 7 | |
1 | 8 | 2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de> |
2 | 9 | |
3 | 10 | * optman/Makefile.am, src/Makefile.am: Include compile.am. |
RCS file: /usr1/CVS/rtems/cpukit/rtems/include/rtems/rtems/ratemon.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
|
|
|
19 | 19 | * found in the file LICENSE in this distribution or at |
20 | 20 | * http://www.OARcorp.com/rtems/license.html. |
21 | 21 | * |
22 | | * $Id: ratemon.h,v 1.14 1999/11/17 17:50:24 joel Exp $ |
| 22 | * $Id: ratemon.h,v 1.15 2000/09/29 14:48:17 joel Exp $ |
23 | 23 | */ |
24 | 24 | |
25 | 25 | #ifndef __RTEMS_RATE_MONOTONIC_h |
… |
… |
|
76 | 76 | rtems_rate_monotonic_period_states state; |
77 | 77 | unsigned32 owner_ticks_executed_at_period; |
78 | 78 | unsigned32 time_at_period; |
| 79 | unsigned32 next_length; |
79 | 80 | Thread_Control *owner; |
80 | 81 | } Rate_monotonic_Control; |
81 | 82 | |
RCS file: /usr1/CVS/rtems/cpukit/rtems/src/ratemontimeout.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
|
|
|
9 | 9 | * found in the file LICENSE in this distribution or at |
10 | 10 | * http://www.OARcorp.com/rtems/license.html. |
11 | 11 | * |
12 | | * $Id: ratemontimeout.c,v 1.2 1999/11/17 17:50:27 joel Exp $ |
| 12 | * $Id: ratemontimeout.c,v 1.3 2000/09/29 14:48:17 joel Exp $ |
13 | 13 | */ |
14 | 14 | |
15 | 15 | #include <rtems/system.h> |
… |
… |
|
44 | 44 | Objects_Locations location; |
45 | 45 | Thread_Control *the_thread; |
46 | 46 | |
| 47 | /* |
| 48 | * When we get here, the Timer is already off the chain so we do not |
| 49 | * have to worry about that -- hence no _Watchdog_Remove(). |
| 50 | */ |
| 51 | |
47 | 52 | the_period = _Rate_monotonic_Get( id, &location ); |
48 | 53 | switch ( location ) { |
49 | 54 | case OBJECTS_REMOTE: /* impossible */ |
… |
… |
|
60 | 65 | |
61 | 66 | the_period->time_at_period = _Watchdog_Ticks_since_boot; |
62 | 67 | |
63 | | _Watchdog_Reset( &the_period->Timer ); |
| 68 | _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); |
64 | 69 | } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { |
65 | 70 | the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; |
66 | 71 | the_period->owner_ticks_executed_at_period = |
67 | 72 | the_thread->ticks_executed; |
68 | 73 | |
69 | 74 | the_period->time_at_period = _Watchdog_Ticks_since_boot; |
70 | | _Watchdog_Reset( &the_period->Timer ); |
| 75 | _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); |
71 | 76 | } else |
72 | 77 | the_period->state = RATE_MONOTONIC_EXPIRED; |
73 | 78 | _Thread_Unnest_dispatch(); |