Property definitions

pthreads $ NativePthread :: defaultinit
private extern class NativePthread in "C" `{ pthread_t * `}

	new create(nit_thread: Thread) import Thread.main_intern `{
		pthread_attr_t attr;
		pthread_attr_init(&attr);

		pthread_t thread;
		int r = pthread_create(&thread, &attr, (void * (*)(void *))&Thread_main_intern, nit_thread);

		if (r == 0) {
			pthread_t *pthread = malloc(sizeof(pthread_t));
			memmove(pthread, &thread, sizeof(pthread_t));
			return pthread;
		}
		return NULL;
	`}

	new create_ex(nit_thread: Thread, attr: NativePthreadAttr) import Thread.main_intern `{
		pthread_t thread;
		int r = pthread_create(&thread, attr, (void * (*)(void *))&Thread_main_intern, nit_thread);

		if (r == 0) {
			pthread_t *pthread = malloc(sizeof(pthread_t));
			memmove(pthread, &thread, sizeof(pthread_t));
			return pthread;
		}
		return NULL;
	`}

	fun join: nullable Object `{
		void *thread_return;
		pthread_join(*self, &thread_return);
		if(thread_return == NULL) thread_return = null_Object();
		return (nullable_Object)thread_return;
	`}

	fun equal(other: NativePthread): Bool `{ return pthread_equal(*self, *other); `}

	fun kill(signal: Int): Int `{ return pthread_kill(*self, (int)signal); `}
end
lib/pthreads/pthreads.nit:139,1--178,3