Pthread: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
New page: This goes into %DEVKITPRO%/libogc/include/pthread.h <source lang = "cpp"> #pragma once #include <ogcsys.h> #include <gccore.h> #define STACKSIZE 8*1024 typedef lwp_t pthread_t; typedef m...
(No difference)

Revision as of 10:56, 19 January 2009

This goes into %DEVKITPRO%/libogc/include/pthread.h

#pragma once
#include <ogcsys.h>
#include <gccore.h>
#define STACKSIZE 8*1024

typedef lwp_t pthread_t;
typedef mutex_t pthread_mutex_t;
typedef void* pthread_mutexattr_t;
typedef int pthread_attr_t;

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
//int pthread_cancel(pthread_t thread);

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);

//imp
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg)
{
	*thread = 0;
	return LWP_CreateThread(thread, start_routine, arg, 0, STACKSIZE, 64);
}

//int pthread_cancel(pthread_t thread);

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
{
	return LWP_MutexInit(mutex, 0);
}
int pthread_mutex_destroy(pthread_mutex_t *mutex){ return LWP_MutexDestroy(*mutex);}

int pthread_mutex_lock(pthread_mutex_t *mutex)   { return LWP_MutexLock(*mutex);   }
int pthread_mutex_trylock(pthread_mutex_t *mutex){ return LWP_MutexTryLock(*mutex);}
int pthread_mutex_unlock(pthread_mutex_t *mutex) { return LWP_MutexUnlock(*mutex); }