Changeset a61f1a46 in rtems
- Timestamp:
- 08/06/96 16:24:41 (27 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 0f99198
- Parents:
- 06883e13
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/exec/posix/src/pthread.c
r06883e13 ra61f1a46 173 173 void **value_ptr; 174 174 175 (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_POSIX ] ); 176 177 deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 178 175 api = deleted->API_Extensions[ THREAD_API_POSIX ]; 176 179 177 /* XXX run cancellation handlers */ 180 178 … … 184 182 * Wakeup all the tasks which joined with this one 185 183 */ 186 187 api = deleted->API_Extensions[ THREAD_API_POSIX ];188 184 189 185 value_ptr = (void **) deleted->Wait.return_argument; … … 194 190 if ( api->schedpolicy == SCHED_SPORADIC ) 195 191 (void) _Watchdog_Remove( &api->Sporadic_timer ); 192 193 deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 194 195 (void) _Workspace_Free( api ); 196 196 } 197 197 … … 1018 1018 POSIX_API_Control *api; 1019 1019 Objects_Locations location; 1020 void *return_pointer; 1020 1021 1021 1022 the_thread = _POSIX_Threads_Get( thread, &location ); … … 1041 1042 */ 1042 1043 1043 _Thread_Executing->Wait.return_argument = (unsigned32 *) value_ptr;1044 _Thread_Executing->Wait.return_argument = (unsigned32 *) &return_pointer; 1044 1045 1045 1046 _Thread_queue_Enter_critical_section( &api->Join_List ); … … 1049 1050 _Thread_Enable_dispatch(); 1050 1051 1052 if ( value_ptr ) 1053 *value_ptr = return_pointer; 1051 1054 return 0; 1052 1055 } -
cpukit/posix/src/pthread.c
r06883e13 ra61f1a46 173 173 void **value_ptr; 174 174 175 (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_POSIX ] ); 176 177 deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 178 175 api = deleted->API_Extensions[ THREAD_API_POSIX ]; 176 179 177 /* XXX run cancellation handlers */ 180 178 … … 184 182 * Wakeup all the tasks which joined with this one 185 183 */ 186 187 api = deleted->API_Extensions[ THREAD_API_POSIX ];188 184 189 185 value_ptr = (void **) deleted->Wait.return_argument; … … 194 190 if ( api->schedpolicy == SCHED_SPORADIC ) 195 191 (void) _Watchdog_Remove( &api->Sporadic_timer ); 192 193 deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 194 195 (void) _Workspace_Free( api ); 196 196 } 197 197 … … 1018 1018 POSIX_API_Control *api; 1019 1019 Objects_Locations location; 1020 void *return_pointer; 1020 1021 1021 1022 the_thread = _POSIX_Threads_Get( thread, &location ); … … 1041 1042 */ 1042 1043 1043 _Thread_Executing->Wait.return_argument = (unsigned32 *) value_ptr;1044 _Thread_Executing->Wait.return_argument = (unsigned32 *) &return_pointer; 1044 1045 1045 1046 _Thread_queue_Enter_critical_section( &api->Join_List ); … … 1049 1050 _Thread_Enable_dispatch(); 1050 1051 1052 if ( value_ptr ) 1053 *value_ptr = return_pointer; 1051 1054 return 0; 1052 1055 }
Note: See TracChangeset
for help on using the changeset viewer.