Running multiple thread instances of the same function. (See MultiThread Program for an example on how to use it)

Dependents:   MutliThread Server_Multi_Client HelloWorld C027_SupportTest ... more

Committer:
lemniskata
Date:
Sat Jun 29 21:13:52 2013 +0000
Revision:
0:266b0dc4f8d0
Child:
1:ecdd97ea3d3b
Running Multiple Thread instances of the same function. Dynamic memory allocation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lemniskata 0:266b0dc4f8d0 1 /*
lemniskata 0:266b0dc4f8d0 2 ** File name: Thread.cpp
lemniskata 0:266b0dc4f8d0 3 ** Descriptions: Creates multiple thread instances of the same function
lemniskata 0:266b0dc4f8d0 4 **
lemniskata 0:266b0dc4f8d0 5 **------------------------------------------------------------------------------------------------------
lemniskata 0:266b0dc4f8d0 6 ** Created by: Ivan Shindev
lemniskata 0:266b0dc4f8d0 7 ** Created date: 06/29/2013
lemniskata 0:266b0dc4f8d0 8 ** Version: 1.0
lemniskata 0:266b0dc4f8d0 9 ** Descriptions: The original version
lemniskata 0:266b0dc4f8d0 10 **
lemniskata 0:266b0dc4f8d0 11 **------------------------------------------------------------------------------------------------------
lemniskata 0:266b0dc4f8d0 12 ** Modified by:
lemniskata 0:266b0dc4f8d0 13 ** Modified date:
lemniskata 0:266b0dc4f8d0 14 ** Version:
lemniskata 0:266b0dc4f8d0 15 ** Descriptions:
lemniskata 0:266b0dc4f8d0 16 ********************************************************************************************************/
lemniskata 0:266b0dc4f8d0 17 #include "Threads.h"
lemniskata 0:266b0dc4f8d0 18
lemniskata 0:266b0dc4f8d0 19 int initThread(osThreadDef_t ***addresOfThreads,os_pthread pthread)
lemniskata 0:266b0dc4f8d0 20 {
lemniskata 0:266b0dc4f8d0 21 *addresOfThreads=(osThreadDef_t **)malloc(sizeof(osThreadDef_t *));
lemniskata 0:266b0dc4f8d0 22 if(*addresOfThreads==NULL)
lemniskata 0:266b0dc4f8d0 23 return 0;
lemniskata 0:266b0dc4f8d0 24
lemniskata 0:266b0dc4f8d0 25 (*addresOfThreads)[0]=NULL;
lemniskata 0:266b0dc4f8d0 26 (*addresOfThreads)[0]=(osThreadDef_t *)malloc(sizeof(osThreadDef_t ));
lemniskata 0:266b0dc4f8d0 27
lemniskata 0:266b0dc4f8d0 28 if((*addresOfThreads)[0]==NULL)
lemniskata 0:266b0dc4f8d0 29 return 0;
lemniskata 0:266b0dc4f8d0 30
lemniskata 0:266b0dc4f8d0 31 (*addresOfThreads)[0]->pthread=pthread;
lemniskata 0:266b0dc4f8d0 32 (*addresOfThreads)[0]->tpriority=osPriorityNormal;
lemniskata 0:266b0dc4f8d0 33 (*addresOfThreads)[0]->stacksize=DEFAULT_STACK_SIZE;
lemniskata 0:266b0dc4f8d0 34
lemniskata 0:266b0dc4f8d0 35 (*addresOfThreads)[0]->stack_pointer=NULL;
lemniskata 0:266b0dc4f8d0 36 (*addresOfThreads)[0]->stack_pointer=(unsigned char *)malloc(DEFAULT_STACK_SIZE);
lemniskata 0:266b0dc4f8d0 37
lemniskata 0:266b0dc4f8d0 38 if((*addresOfThreads)[0]->stack_pointer==NULL)
lemniskata 0:266b0dc4f8d0 39 return 0;
lemniskata 0:266b0dc4f8d0 40
lemniskata 0:266b0dc4f8d0 41 return 1;
lemniskata 0:266b0dc4f8d0 42
lemniskata 0:266b0dc4f8d0 43 }
lemniskata 0:266b0dc4f8d0 44
lemniskata 0:266b0dc4f8d0 45 int reAlloc(osThreadDef_t ***addresOfThreads,os_pthread pthread,int numberOfThreads)
lemniskata 0:266b0dc4f8d0 46 {
lemniskata 0:266b0dc4f8d0 47 osThreadDef_t **temp=NULL;
lemniskata 0:266b0dc4f8d0 48 temp=(osThreadDef_t **)realloc((*addresOfThreads),numberOfThreads*sizeof(osThreadDef_t *));
lemniskata 0:266b0dc4f8d0 49 if(temp==NULL)
lemniskata 0:266b0dc4f8d0 50 {
lemniskata 0:266b0dc4f8d0 51 return 0;
lemniskata 0:266b0dc4f8d0 52 }
lemniskata 0:266b0dc4f8d0 53 (*addresOfThreads)=temp;
lemniskata 0:266b0dc4f8d0 54 (*addresOfThreads)[numberOfThreads-1]=NULL;
lemniskata 0:266b0dc4f8d0 55 (*addresOfThreads)[numberOfThreads-1]=(osThreadDef_t *)malloc(sizeof(osThreadDef_t ));
lemniskata 0:266b0dc4f8d0 56
lemniskata 0:266b0dc4f8d0 57 if((*addresOfThreads)[numberOfThreads-1]==NULL)
lemniskata 0:266b0dc4f8d0 58 return 0;
lemniskata 0:266b0dc4f8d0 59
lemniskata 0:266b0dc4f8d0 60 (*addresOfThreads)[numberOfThreads-1]->pthread=pthread;
lemniskata 0:266b0dc4f8d0 61 (*addresOfThreads)[numberOfThreads-1]->tpriority=osPriorityNormal;
lemniskata 0:266b0dc4f8d0 62 (*addresOfThreads)[numberOfThreads-1]->stacksize=DEFAULT_STACK_SIZE;
lemniskata 0:266b0dc4f8d0 63
lemniskata 0:266b0dc4f8d0 64 (*addresOfThreads)[numberOfThreads-1]->stack_pointer=NULL;
lemniskata 0:266b0dc4f8d0 65 (*addresOfThreads)[numberOfThreads-1]->stack_pointer=(unsigned char *)malloc(DEFAULT_STACK_SIZE);
lemniskata 0:266b0dc4f8d0 66
lemniskata 0:266b0dc4f8d0 67 if((*addresOfThreads)[numberOfThreads-1]->stack_pointer==NULL)
lemniskata 0:266b0dc4f8d0 68 return 0;
lemniskata 0:266b0dc4f8d0 69
lemniskata 0:266b0dc4f8d0 70 return 1;
lemniskata 0:266b0dc4f8d0 71
lemniskata 0:266b0dc4f8d0 72 }