Array * array_init(char * segmentName, void * initAddress, int sizeOfType, int slabIncrementSize, int callingProcess){ Array * array = malloc(sizeof(Array)); collection_init((Collection *)array, segmentName, initAddress, slabIncrementSize*sizeOfType + sizeof(ArrayHdr), callingProcess); array->sizeOfType=sizeOfType; array->slabIncrementSize=slabIncrementSize; if (((ArrayHdr *)array->base.mem)->currentObjectsAllocated == 0 && callingProcess == SHM_CORE){ //lets start it off at 1 so a pointer of 0 will indicate NULL ((ArrayHdr *)array->base.mem)->currentObjectsAllocated = 1; } array->nextFreeSlot=array->base.mem + sizeof(ArrayHdr) + ( ((ArrayHdr *)array->base.mem)->currentObjectsAllocated * sizeOfType); return array; }
void client_init(void) { usbmuxd_log(LL_DEBUG, "client_init"); collection_init(&client_list); pthread_mutex_init(&client_list_mutex, NULL); }