comparison VSs.c @ 23:3787df8b95f9

seedSlv gets taskID -1, assigner initiates shutdown if deadlock detected, more explicit debug messages
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Fri, 01 Feb 2013 17:18:57 +0100
parents b787a5234406
children 227db52cbd93
comparison
equal deleted inserted replaced
19:77ee327541ff 20:8b793bc2312c
75 VSs__create_seed_slave_and_do_work( TopLevelFnPtr fnPtr, void *initData ) 75 VSs__create_seed_slave_and_do_work( TopLevelFnPtr fnPtr, void *initData )
76 { VSsSemEnv *semEnv; 76 { VSsSemEnv *semEnv;
77 SlaveVP *seedSlv; 77 SlaveVP *seedSlv;
78 VSsSemData *semData; 78 VSsSemData *semData;
79 VSsTaskStub *threadTaskStub, *parentTaskStub; 79 VSsTaskStub *threadTaskStub, *parentTaskStub;
80 int32* taskID;
80 81
81 VSs__init(); //normal multi-thd 82 VSs__init(); //normal multi-thd
82 83
83 semEnv = _VMSMasterEnv->semanticEnv; 84 semEnv = _VMSMasterEnv->semanticEnv;
84 85
96 parentTaskStub = create_thread_task_stub( NULL ); 97 parentTaskStub = create_thread_task_stub( NULL );
97 parentTaskStub->isEnded = TRUE; 98 parentTaskStub->isEnded = TRUE;
98 parentTaskStub->numLiveChildThreads = 1; //so dissipate works for seed 99 parentTaskStub->numLiveChildThreads = 1; //so dissipate works for seed
99 threadTaskStub->parentTaskStub = parentTaskStub; 100 threadTaskStub->parentTaskStub = parentTaskStub;
100 threadTaskStub->slaveAssignedTo = seedSlv; 101 threadTaskStub->slaveAssignedTo = seedSlv;
102
103 taskID = VMS_WL__malloc(2 * sizeof(int32) );
104 taskID[0] = 1;
105 taskID[1] = -1;
106 threadTaskStub->taskID = taskID;
101 107
102 semData = (VSsSemData *)seedSlv->semanticData; 108 semData = (VSsSemData *)seedSlv->semanticData;
103 //seedVP is a thread, so has a permanent task 109 //seedVP is a thread, so has a permanent task
104 semData->needsTaskAssigned = FALSE; 110 semData->needsTaskAssigned = FALSE;
105 semData->taskStub = threadTaskStub; 111 semData->taskStub = threadTaskStub;