Changeset 5aa5560 in rtems
- Timestamp:
- 11/12/99 14:38:19 (24 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 3136f5c9
- Parents:
- 3c49a508
- Files:
-
- 4 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/exec/rtems/src/Makefile.in
r3c49a508 r5aa5560 25 25 TASK_C_PIECES = tasks taskcreate taskdelete taskgetnote taskident \ 26 26 taskinitusers taskissuspended taskmode taskrestart taskresume tasksetnote \ 27 tasksetpriority taskstart tasksuspend taskwakeafter taskwakewhen 27 tasksetpriority taskstart tasksuspend taskwakeafter taskwakewhen \ 28 taskvariableadd taskvariabledelete 28 29 29 30 RATEMON_C_PIECES = ratemon ratemoncancel ratemoncreate ratemondelete \ -
c/src/exec/rtems/src/tasks.c
r3c49a508 r5aa5560 57 57 api->pending_events = EVENT_SETS_NONE_PENDING; 58 58 _ASR_Initialize( &api->Signal ); 59 api->task_variables = NULL; 59 60 return TRUE; 60 61 } … … 94 95 ) 95 96 { 96 (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); 97 RTEMS_API_Control *api; 98 struct rtems_task_variable_t *tvp, *next; 99 100 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 101 102 /* 103 * Free per task variable memory 104 */ 105 106 tvp = api->task_variables; 107 api->task_variables = NULL; 108 while (tvp) { 109 next = tvp->next; 110 _Workspace_Free( tvp ); 111 tvp = next; 112 } 113 114 /* 115 * Free API specific memory 116 */ 117 118 (void) _Workspace_Free( api ); 97 119 98 120 deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; … … 107 129 108 130 void _RTEMS_tasks_Switch_extension( 131 Thread_Control *executing, 132 Thread_Control *heir 133 ) 134 { 135 RTEMS_API_Control *api; 136 struct rtems_task_variable_t *tvp; 137 138 /* 139 * Per Task Variables 140 */ 141 142 143 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 144 tvp = api->task_variables; 145 while (tvp) { 146 tvp->var = *tvp->ptr; 147 tvp = tvp->next; 148 } 149 150 api = heir->API_Extensions[ THREAD_API_RTEMS ]; 151 tvp = api->task_variables; 152 while (tvp) { 153 *tvp->ptr = tvp->var; 154 tvp = tvp->next; 155 } 156 } 157 158 /*PAGE 159 * 160 * _RTEMS_tasks_Post_switch_extension 161 * 162 * This extension routine is invoked at each context switch. 163 */ 164 165 void _RTEMS_tasks_Post_switch_extension( 109 166 Thread_Control *executing 110 167 ) … … 117 174 118 175 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 176 177 /* 178 * Signal Processing 179 */ 180 119 181 asr = &api->Signal; 120 182 … … 142 204 NULL, /* predriver */ 143 205 _RTEMS_tasks_Initialize_user_tasks, /* postdriver */ 144 _RTEMS_tasks_ Switch_extension/* post switch */206 _RTEMS_tasks_Post_switch_extension /* post switch */ 145 207 }; 146 208 … … 151 213 _RTEMS_tasks_Start_extension, /* restart */ 152 214 _RTEMS_tasks_Delete_extension, /* delete */ 153 NULL,/* switch */215 _RTEMS_tasks_Switch_extension, /* switch */ 154 216 NULL, /* begin */ 155 217 NULL, /* exitted */ -
cpukit/rtems/src/tasks.c
r3c49a508 r5aa5560 57 57 api->pending_events = EVENT_SETS_NONE_PENDING; 58 58 _ASR_Initialize( &api->Signal ); 59 api->task_variables = NULL; 59 60 return TRUE; 60 61 } … … 94 95 ) 95 96 { 96 (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); 97 RTEMS_API_Control *api; 98 struct rtems_task_variable_t *tvp, *next; 99 100 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 101 102 /* 103 * Free per task variable memory 104 */ 105 106 tvp = api->task_variables; 107 api->task_variables = NULL; 108 while (tvp) { 109 next = tvp->next; 110 _Workspace_Free( tvp ); 111 tvp = next; 112 } 113 114 /* 115 * Free API specific memory 116 */ 117 118 (void) _Workspace_Free( api ); 97 119 98 120 deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; … … 107 129 108 130 void _RTEMS_tasks_Switch_extension( 131 Thread_Control *executing, 132 Thread_Control *heir 133 ) 134 { 135 RTEMS_API_Control *api; 136 struct rtems_task_variable_t *tvp; 137 138 /* 139 * Per Task Variables 140 */ 141 142 143 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 144 tvp = api->task_variables; 145 while (tvp) { 146 tvp->var = *tvp->ptr; 147 tvp = tvp->next; 148 } 149 150 api = heir->API_Extensions[ THREAD_API_RTEMS ]; 151 tvp = api->task_variables; 152 while (tvp) { 153 *tvp->ptr = tvp->var; 154 tvp = tvp->next; 155 } 156 } 157 158 /*PAGE 159 * 160 * _RTEMS_tasks_Post_switch_extension 161 * 162 * This extension routine is invoked at each context switch. 163 */ 164 165 void _RTEMS_tasks_Post_switch_extension( 109 166 Thread_Control *executing 110 167 ) … … 117 174 118 175 api = executing->API_Extensions[ THREAD_API_RTEMS ]; 176 177 /* 178 * Signal Processing 179 */ 180 119 181 asr = &api->Signal; 120 182 … … 142 204 NULL, /* predriver */ 143 205 _RTEMS_tasks_Initialize_user_tasks, /* postdriver */ 144 _RTEMS_tasks_ Switch_extension/* post switch */206 _RTEMS_tasks_Post_switch_extension /* post switch */ 145 207 }; 146 208 … … 151 213 _RTEMS_tasks_Start_extension, /* restart */ 152 214 _RTEMS_tasks_Delete_extension, /* delete */ 153 NULL,/* switch */215 _RTEMS_tasks_Switch_extension, /* switch */ 154 216 NULL, /* begin */ 155 217 NULL, /* exitted */
Note: See TracChangeset
for help on using the changeset viewer.