Exemplo n.º 1
0
/**
 * Run Worker
 *
 * @param nr id of worker which will be launched
 * @return 0 when success, otherwise error number
 */
int WorkerRun( Worker *wrk )
{
	if( wrk == NULL )
	{
		FERROR("[WorkerRun] Cannot run worker, worker is NULL\n");
		return 1;
	}
	
	clock_t start, end;

	start = clock();
	
	size_t stacksize = 16777216; //16 * 1024 * 1024;
	pthread_attr_t attr;
	pthread_attr_init( &attr );
	pthread_attr_setstacksize( &attr, stacksize );

	wrk->w_Thread = ThreadNew( WorkerThread, wrk, TRUE, &attr );
	if( wrk->w_Thread == NULL )
	{
		FERROR("[WorkerRun] Cannot create thread!\n");
		WorkerDelete( wrk );
		return -1;
	}
	
	end = clock();
    wrk->w_WorkMicros = end - start;
    wrk->w_WorkSeconds = wrk->w_WorkMicros / 1000000;
	
	return 0;
}
Exemplo n.º 2
0
Service *ServiceNew( char *command, BOOL autostart )
{
	Service *service = NULL;
	
	if( ( service = calloc( 1, sizeof( Service ) )  ) != NULL )
	{
		printf("ServiceNew\n");
		int size = strlen( command );
		if( size > 0 )
		{
			if( ( service->s_Command = calloc( size+1, sizeof( char ) ) ) != NULL )
			{
				memcpy( service->s_Command, command, size*sizeof(char) );
			}
		}
		
		service->s_Buffer = calloc( SERVICE_BUFFER_MAX, sizeof(BYTE) );
		service->s_State = SERVICE_STOPPED;
		
		if( autostart )
		{
			printf("Starting thread\n");
			service->s_Thread = ThreadNew( ServiceThread, service );
			if( service->s_Thread == NULL )
			{
				ServiceDelete( service );
			}
		}
	}
	
	return service;
}
Exemplo n.º 3
0
int WorkerRun( Worker *wrk )
{
    if( wrk == NULL )
    {
        ERROR("[WorkerRun] Cannot run worker, worker is NULL\n");
        return 1;
    }

    clock_t start, end;

    start = clock();

    //DEBUG("[WorkerRun] STARTING thread %p\n", wrk);
    wrk->w_Thread = ThreadNew( WorkerThread, wrk );
    if( wrk->w_Thread == NULL )
    {
        ERROR("[WorkerRun] Cannot create thread!\n");
        WorkerDelete( wrk );
        return -1;
    }

    end = clock();
    wrk->w_WorkMicros = end - start;
    wrk->w_WorkSeconds = wrk->w_WorkMicros / 1000000;

    return 0;
}
Exemplo n.º 4
0
int ServiceStart( Service *s )
{
	if( !s->s_Thread )
	{
		s->s_Thread = ThreadNew( ServiceThread, s );
	}
	return 0;
}
void main(int argc, char **argv)
{
int i;
bool verbose = (argc == 2 && (strcmp(argv[1], "-v") == 0));
Semaphore oxygenReady, hydrogenReady; // semaphores used as counters
InitThreadPackage(verbose);
oxygenReady = SemaphoreNew("Oxygen Ready", 0);
hydrogenReady = SemaphoreNew("Hydrogen Ready", 0);
13
for (i = 0; i < NUM_WATER; i++)
ThreadNew(“Oxygen”, Oxygen, 2, oxygenReady, hydrogenReady);
for (i = 0; i < 2 * NUM_WATER; i++)
ThreadNew(“Hydrogen”, Hydrogen, 2, oxygenReady, hydrogenReady);
RunAllThreads();
printf("All done!\n");
SemaphoreFree(oxygenReady);
SemaphoreFree(hydrogenReady);
}
Exemplo n.º 6
0
SSHServer *SSHServerNew()
{
	SSHServer *ts = NULL;

	if( ( ts = calloc( 1, sizeof( SSHServer ) ) ) != NULL )
	{
#ifdef ENABLE_SSH	
		ssh_threads_set_callbacks( ssh_threads_get_pthread() );
		ssh_init();
	
		ts->sshs_Thread = ThreadNew( SSHThread, ts );
#endif
	}
	return ts;
}
Exemplo n.º 7
0
/**
 * Creates a new Event Manager structure and launches its thread
 *
 * @return pointer to the newly created event manager
 */
EventManager *EventManagerNew( void *sb )
{
	EventManager *em = FCalloc( sizeof( EventManager) , 1 );
	DEBUG("[EventManager] start\n");
	if( em != NULL )
	{
		em->lastID = 0xf;
		em->em_SB = sb;
		em->em_EventThread = ThreadNew( EventManagerLoopThread, em, TRUE, NULL );
	}
	else
	{
		Log( FLOG_FATAL, "Cannot allocate memory for EventManager!\n");
	}

	return em;
}
Exemplo n.º 8
0
/**
 * Websocket start thread function
 *
 * @param ws pointer to WebSocket structure
 * @return 0 when success, otherwise error number
 */
int WebSocketStart( WebSocket *ws )
{
	DEBUG1("[WS] Starting websocket thread\n");
	ws->ws_Thread = ThreadNew( WebsocketThread, ws, TRUE, NULL );
	return 0;
}