1 | ### Eclipse Workspace Patch 1.0 |
---|
2 | #P rtems-4.8 |
---|
3 | Index: cpukit/posix/src/ptimer1.c |
---|
4 | =================================================================== |
---|
5 | RCS file: /usr1/CVS/rtems/cpukit/posix/src/Attic/ptimer1.c,v |
---|
6 | retrieving revision 1.22 |
---|
7 | diff -u -r1.22 ptimer1.c |
---|
8 | --- cpukit/posix/src/ptimer1.c 5 Apr 2007 21:17:26 -0000 1.22 |
---|
9 | +++ cpukit/posix/src/ptimer1.c 19 Aug 2008 20:48:13 -0000 |
---|
10 | @@ -267,14 +267,17 @@ |
---|
11 | POSIX_Timer_Control *ptimer; |
---|
12 | Objects_Locations location; |
---|
13 | boolean activated; |
---|
14 | + uint32_t initial_ticks; |
---|
15 | |
---|
16 | if ( value == NULL ) { |
---|
17 | rtems_set_errno_and_return_minus_one( EINVAL ); |
---|
18 | } |
---|
19 | |
---|
20 | /* First, it verifies if the structure "value" is correct */ |
---|
21 | - if ( ( value->it_value.tv_nsec > TOD_NANOSECONDS_PER_SECOND ) || |
---|
22 | - ( value->it_value.tv_nsec < 0 ) ) { |
---|
23 | + if ( ( value->it_value.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) || |
---|
24 | + ( value->it_value.tv_nsec < 0 ) || |
---|
25 | + ( value->it_interval.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) || |
---|
26 | + ( value->it_interval.tv_nsec < 0 )) { |
---|
27 | /* The number of nanoseconds is not correct */ |
---|
28 | rtems_set_errno_and_return_minus_one( EINVAL ); |
---|
29 | } |
---|
30 | @@ -326,7 +329,9 @@ |
---|
31 | /* The fire time is absolute: use "rtems_time_fire_when" */ |
---|
32 | /* First, it converts from struct itimerspec to rtems_time_of_day */ |
---|
33 | |
---|
34 | - _Watchdog_Initialize( |
---|
35 | + ptimer->ticks = _Timespec_To_ticks( &value->it_interval ); |
---|
36 | + |
---|
37 | + _Watchdog_Initialize( |
---|
38 | &ptimer->Timer, _POSIX_Timer_TSR, ptimer->Object.id, ptimer ); |
---|
39 | |
---|
40 | _Watchdog_Insert_seconds( |
---|
41 | @@ -351,11 +356,12 @@ |
---|
42 | /* The fire time is relative: use "rtems_time_fire_after" */ |
---|
43 | case POSIX_TIMER_RELATIVE: |
---|
44 | /* First, convert from seconds and nanoseconds to ticks */ |
---|
45 | - ptimer->ticks = _Timespec_To_ticks( &value->it_value ); |
---|
46 | + ptimer->ticks = _Timespec_To_ticks( &value->it_interval ); |
---|
47 | + initial_ticks = _Timespec_To_ticks( &value->it_value ); |
---|
48 | |
---|
49 | activated = _Watchdog_Insert_ticks_helper( |
---|
50 | &ptimer->Timer, |
---|
51 | - ptimer->ticks, |
---|
52 | + initial_ticks, |
---|
53 | ptimer->Object.id, |
---|
54 | _POSIX_Timer_TSR, |
---|
55 | ptimer |
---|
56 | Index: testsuites/psxtests/psxtimer/psxtimer.scn |
---|
57 | =================================================================== |
---|
58 | RCS file: /usr1/CVS/rtems/testsuites/psxtests/psxtimer/Attic/psxtimer.scn,v |
---|
59 | retrieving revision 1.4 |
---|
60 | diff -u -r1.4 psxtimer.scn |
---|
61 | --- testsuites/psxtests/psxtimer/psxtimer.scn 11 May 2007 19:44:22 -0000 1.4 |
---|
62 | +++ testsuites/psxtests/psxtimer/psxtimer.scn 19 Aug 2008 20:48:14 -0000 |
---|
63 | @@ -1,37 +1,34 @@ |
---|
64 | *** POSIX Timers Test *** |
---|
65 | -Executing task A Fri Jan 1 00:00:01 1988 |
---|
66 | -Executing task B with x = 1 Fri Jan 1 00:00:02 1988 |
---|
67 | Executing task A Fri Jan 1 00:00:02 1988 |
---|
68 | -Executing task C with x = 1 Fri Jan 1 00:00:03 1988 |
---|
69 | Executing task A Fri Jan 1 00:00:03 1988 |
---|
70 | -Executing task B with x = 2 Fri Jan 1 00:00:04 1988 |
---|
71 | +Executing task B with x = 1 Fri Jan 1 00:00:04 1988 |
---|
72 | Executing task A Fri Jan 1 00:00:04 1988 |
---|
73 | Executing task A Fri Jan 1 00:00:05 1988 |
---|
74 | -Executing task B with x = 3 Fri Jan 1 00:00:06 1988 |
---|
75 | -Executing task C with x = 3 Fri Jan 1 00:00:06 1988 |
---|
76 | +Executing task B with x = 2 Fri Jan 1 00:00:06 1988 |
---|
77 | +Executing task C with x = 2 Fri Jan 1 00:00:06 1988 |
---|
78 | Executing task A Fri Jan 1 00:00:06 1988 |
---|
79 | Executing task A Fri Jan 1 00:00:07 1988 |
---|
80 | -Executing task B with x = 4 Fri Jan 1 00:00:08 1988 |
---|
81 | +Executing task B with x = 3 Fri Jan 1 00:00:08 1988 |
---|
82 | Executing task A Fri Jan 1 00:00:08 1988 |
---|
83 | -Executing task C with x = 4 Fri Jan 1 00:00:09 1988 |
---|
84 | +Executing task C with x = 3 Fri Jan 1 00:00:09 1988 |
---|
85 | Executing task A Fri Jan 1 00:00:09 1988 |
---|
86 | -Executing task B with x = 5 Fri Jan 1 00:00:10 1988 |
---|
87 | +Executing task B with x = 4 Fri Jan 1 00:00:10 1988 |
---|
88 | Executing task A Fri Jan 1 00:00:10 1988 |
---|
89 | Executing task A Fri Jan 1 00:00:11 1988 |
---|
90 | -Executing task B with x = 6 Fri Jan 1 00:00:12 1988 |
---|
91 | -Executing task C with x = 6 Fri Jan 1 00:00:12 1988 |
---|
92 | +Executing task B with x = 5 Fri Jan 1 00:00:12 1988 |
---|
93 | +Executing task C with x = 5 Fri Jan 1 00:00:12 1988 |
---|
94 | Executing task A Fri Jan 1 00:00:12 1988 |
---|
95 | Executing task A Fri Jan 1 00:00:13 1988 |
---|
96 | -Executing task B with x = 7 Fri Jan 1 00:00:14 1988 |
---|
97 | +Executing task B with x = 6 Fri Jan 1 00:00:14 1988 |
---|
98 | Executing task A Fri Jan 1 00:00:14 1988 |
---|
99 | -Executing task C with x = 7 Fri Jan 1 00:00:15 1988 |
---|
100 | +Executing task C with x = 6 Fri Jan 1 00:00:15 1988 |
---|
101 | Executing task A Fri Jan 1 00:00:15 1988 |
---|
102 | -Executing task B with x = 8 Fri Jan 1 00:00:16 1988 |
---|
103 | +Executing task B with x = 7 Fri Jan 1 00:00:16 1988 |
---|
104 | Executing task A Fri Jan 1 00:00:16 1988 |
---|
105 | Executing task A Fri Jan 1 00:00:17 1988 |
---|
106 | -Executing task B with x = 9 Fri Jan 1 00:00:18 1988 |
---|
107 | -Executing task C with x = 9 Fri Jan 1 00:00:18 1988 |
---|
108 | +Executing task B with x = 8 Fri Jan 1 00:00:18 1988 |
---|
109 | +Executing task C with x = 8 Fri Jan 1 00:00:18 1988 |
---|
110 | Executing task A Fri Jan 1 00:00:18 1988 |
---|
111 | Executing task A Fri Jan 1 00:00:19 1988 |
---|
112 | -Executing task B with x = 10 Fri Jan 1 00:00:20 1988 |
---|
113 | +Executing task B with x = 9 Fri Jan 1 00:00:20 1988 |
---|
114 | *** END OF POSIX Timers Test *** |
---|
115 | Index: testsuites/psxtests/psxtimer/psxtimer.c |
---|
116 | =================================================================== |
---|
117 | RCS file: /usr1/CVS/rtems/testsuites/psxtests/psxtimer/Attic/psxtimer.c,v |
---|
118 | retrieving revision 1.8 |
---|
119 | diff -u -r1.8 psxtimer.c |
---|
120 | --- testsuites/psxtests/psxtimer/psxtimer.c 11 May 2007 19:44:22 -0000 1.8 |
---|
121 | +++ testsuites/psxtests/psxtimer/psxtimer.c 19 Aug 2008 20:48:13 -0000 |
---|
122 | @@ -82,6 +82,7 @@ |
---|
123 | /* set the timer in periodic mode */ |
---|
124 | timerdata.it_interval = my_period; |
---|
125 | timerdata.it_value = my_period; |
---|
126 | + timerdata.it_value.tv_sec *= 2; |
---|
127 | if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) { |
---|
128 | perror ("Error in timer setting\n"); |
---|
129 | pthread_exit ((void *) -1); |
---|
130 | @@ -133,6 +134,7 @@ |
---|
131 | /* set the timer in periodic mode */ |
---|
132 | timerdata.it_interval = my_period; |
---|
133 | timerdata.it_value = my_period; |
---|
134 | + timerdata.it_value.tv_sec *= 2; |
---|
135 | if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) { |
---|
136 | perror ("Error in timer setting\n"); |
---|
137 | pthread_exit ((void *) -1); |
---|
138 | @@ -191,6 +193,7 @@ |
---|
139 | /* set the timer in periodic mode */ |
---|
140 | timerdata.it_interval = my_period; |
---|
141 | timerdata.it_value = my_period; |
---|
142 | + timerdata.it_value.tv_sec *= 2; |
---|
143 | if (timer_settime(timer_id, 0, &timerdata, NULL) == -1) { |
---|
144 | perror ("Error in timer setting\n"); |
---|
145 | pthread_exit ((void *) -1); |
---|