mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-15 03:01:09 +08:00
LDAPworldP19: Patch for Next C-Threads
This commit is contained in:
parent
0b0c178c1a
commit
b63a0b1c61
@ -3,7 +3,40 @@
|
||||
#ifndef _LTHREAD_H
|
||||
#define _LTHREAD_H
|
||||
|
||||
#if defined( THREAD_SUNOS4_LWP )
|
||||
#if defined ( THREAD_NEXT_CTHREADS )
|
||||
|
||||
#define _THREAD
|
||||
|
||||
#include <mach/cthreads.h>
|
||||
|
||||
typedef cthread_fn_t VFP;
|
||||
typedef int pthread_attr_t;
|
||||
typedef cthread_t pthread_t;
|
||||
|
||||
/* default attr states */
|
||||
#define pthread_mutexattr_default NULL
|
||||
#define pthread_condattr_default NULL
|
||||
|
||||
/* thread state - joinable or not */
|
||||
#define PTHREAD_CREATE_JOINABLE 0
|
||||
#define PTHREAD_CREATE_DETACHED 1
|
||||
/* thread scope - who is in scheduling pool */
|
||||
#define PTHREAD_SCOPE_PROCESS 0
|
||||
#define PTHREAD_SCOPE_SYSTEM 1
|
||||
|
||||
/* mutex attributes and mutex type */
|
||||
typedef int pthread_mutexattr_t;
|
||||
typedef struct mutex pthread_mutex_t;
|
||||
|
||||
/* mutex and condition variable scope - process or system */
|
||||
#define PTHREAD_SHARE_PRIVATE 0
|
||||
#define PTHREAD_SHARE_PROCESS 1
|
||||
|
||||
/* condition variable attributes and condition variable type */
|
||||
typedef int pthread_condattr_t;
|
||||
typedef struct condition pthread_cond_t;
|
||||
|
||||
#elif defined( THREAD_SUNOS4_LWP )
|
||||
/***********************************
|
||||
* *
|
||||
* thread definitions for sunos4 *
|
||||
|
@ -2,7 +2,157 @@
|
||||
#include <stdio.h>
|
||||
#include "lthread.h"
|
||||
|
||||
#if defined( THREAD_SUNOS4_LWP )
|
||||
#if defined( THREAD_NEXT_CTHREADS )
|
||||
|
||||
/***********************************************************************
|
||||
* *
|
||||
* under NEXTSTEP or OPENSTEP use CThreads *
|
||||
* lukeh@xedoc.com.au *
|
||||
* *
|
||||
***********************************************************************/
|
||||
|
||||
int
|
||||
pthread_attr_init( pthread_attr_t *attr )
|
||||
{
|
||||
*attr = 0;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_attr_destroy( pthread_attr_t *attr )
|
||||
{
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_attr_getdetachstate( pthread_attr_t *attr, int *detachstate )
|
||||
{
|
||||
*detachstate = *attr;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate )
|
||||
{
|
||||
*attr = detachstate;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
int
|
||||
pthread_create(
|
||||
pthread_t *tid,
|
||||
pthread_attr_t attr,
|
||||
VFP func,
|
||||
void *arg
|
||||
)
|
||||
{
|
||||
*tid = cthread_fork(func, arg);
|
||||
return ( *tid == NULL ? -1 : 0 );
|
||||
}
|
||||
|
||||
void
|
||||
pthread_yield()
|
||||
{
|
||||
cthread_yield();
|
||||
}
|
||||
|
||||
void
|
||||
pthread_exit( any_t a )
|
||||
{
|
||||
cthread_exit( a );
|
||||
}
|
||||
|
||||
void
|
||||
pthread_join( pthread_t tid, int *pStatus )
|
||||
{
|
||||
int status;
|
||||
status = (int) cthread_join ( tid );
|
||||
if (pStatus != NULL)
|
||||
{
|
||||
*pStatus = status;
|
||||
}
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
pthread_kill( pthread_t tid, int sig )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
int
|
||||
pthread_mutex_init( pthread_mutex_t *mp, pthread_mutexattr_t *attr )
|
||||
{
|
||||
mutex_init( mp );
|
||||
mp->name = NULL;
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_mutex_destroy( pthread_mutex_t *mp )
|
||||
{
|
||||
mutex_clear( mp );
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_mutex_lock( pthread_mutex_t *mp )
|
||||
{
|
||||
mutex_lock( mp );
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_mutex_unlock( pthread_mutex_t *mp )
|
||||
{
|
||||
mutex_unlock( mp );
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_mutex_trylock( pthread_mutex_t *mp )
|
||||
{
|
||||
return mutex_try_lock( mp );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_cond_init( pthread_cond_t *cv, pthread_condattr_t *attr )
|
||||
{
|
||||
condition_init( cv );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_cond_destroy( pthread_cond_t *cv )
|
||||
{
|
||||
condition_clear( cv );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_cond_wait( pthread_cond_t *cv, pthread_mutex_t *mp )
|
||||
{
|
||||
condition_wait( cv, mp );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_cond_signal( pthread_cond_t *cv )
|
||||
{
|
||||
condition_signal( cv );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
int
|
||||
pthread_cond_broadcast( pthread_cond_t *cv )
|
||||
{
|
||||
condition_broadcast( cv );
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
#elif defined( THREAD_SUNOS4_LWP )
|
||||
|
||||
/***********************************************************************
|
||||
* *
|
||||
|
Loading…
Reference in New Issue
Block a user