X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap_r%2Fthr_cthreads.c;h=a79bd32bc7e0dd6e16942c631056d33fd26309a2;hb=8452b4ccde09a41c7e21cff66ec4f566b1a34e28;hp=8a308e75b39cfa45e3baee5c5debef9c292cefdd;hpb=0c1cb93c69ead8e2eadef1b70daa54125455ec78;p=openldap diff --git a/libraries/libldap_r/thr_cthreads.c b/libraries/libldap_r/thr_cthreads.c index 8a308e75b3..a79bd32bc7 100644 --- a/libraries/libldap_r/thr_cthreads.c +++ b/libraries/libldap_r/thr_cthreads.c @@ -1,21 +1,45 @@ -/* thrmach.c - wrapper for mach cthreads */ +/* thr_cthreads.c - wrapper for mach cthreads */ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2012 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* This work was initially developed by Luke Howard for inclusion + * in U-MICH LDAP 3.3. + */ #include "portable.h" -#include "ldap_pvt_thread.h" #if defined( HAVE_MACH_CTHREADS ) +#include "ldap_pvt_thread.h" /* Get the thread interface */ +#define LDAP_THREAD_IMPLEMENTATION +#include "ldap_thr_debug.h" /* May rename the symbols defined below */ -/*********************************************************************** - * * - * under NEXTSTEP or OPENSTEP use CThreads * - * lukeh@xedoc.com.au * - * * - ***********************************************************************/ +int +ldap_int_thread_initialize( void ) +{ + return 0; +} + +int +ldap_int_thread_destroy( void ) +{ + return 0; +} int ldap_pvt_thread_create( ldap_pvt_thread_t * thread, - ldap_pvt_thread_attr_t *attr, - void *(*start_routine)( void *), void *arg) + int detach, + void *(*start_routine)( void *), void *arg) { *thread = cthread_fork( (cthread_fn_t) start_routine, arg); return ( *thread == NULL ? -1 : 0 ); @@ -31,7 +55,7 @@ int ldap_pvt_thread_join( ldap_pvt_thread_t thread, void **thread_return ) { void *status; - status = (void *) cthread_join ( tid ); + status = (void *) cthread_join ( thread ); if (thread_return != NULL) { *thread_return = status; @@ -53,30 +77,16 @@ ldap_pvt_thread_yield( void ) } int -ldap_pvt_thread_attr_init( ldap_pvt_thread_attr_t *attr ) +ldap_pvt_thread_cond_init( ldap_pvt_thread_cond_t *cond ) { - *attr = 0; - return( 0 ); -} - -int -ldap_pvt_thread_attr_destroy( ldap_pvt_thread_attr_t *attr ) -{ - return( 0 ); -} - -int -ldap_pvt_thread_attr_setdetachstate( ldap_pvt_thread_attr_t *attr, int dstate ) -{ - *attr = dstate; + condition_init( cond ); return( 0 ); } int -ldap_pvt_thread_cond_init( ldap_pvt_thread_cond_t *cond, - ldap_pvt_thread_condattr_t *attr ) +ldap_pvt_thread_cond_destroy( ldap_pvt_thread_cond_t *cond ) { - condition_init( cond ); + condition_clear( cond ); return( 0 ); } @@ -88,9 +98,9 @@ ldap_pvt_thread_cond_signal( ldap_pvt_thread_cond_t *cond ) } int -ldap_pvt_thread_cond_broadcast( ldap_pvt_thread_cond_t *cv ) +ldap_pvt_thread_cond_broadcast( ldap_pvt_thread_cond_t *cond ) { - condition_broadcast( cv ); + condition_broadcast( cond ); return( 0 ); } @@ -103,8 +113,7 @@ ldap_pvt_thread_cond_wait( ldap_pvt_thread_cond_t *cond, } int -ldap_pvt_thread_mutex_init( ldap_pvt_thread_mutex_t *mutex, - ldap_pvt_thread_mutexattr_t *attr ) +ldap_pvt_thread_mutex_init( ldap_pvt_thread_mutex_t *mutex ) { mutex_init( mutex ); mutex->name = NULL; @@ -138,4 +147,34 @@ ldap_pvt_thread_mutex_trylock( ldap_pvt_thread_mutex_t *mutex ) return mutex_try_lock( mutex ); } +ldap_pvt_thread_t +ldap_pvt_thread_self( void ) +{ + return cthread_self(); +} + +int +ldap_pvt_thread_key_create( ldap_pvt_thread_key_t *key ) +{ + return cthread_keycreate( key ); +} + +int +ldap_pvt_thread_key_destroy( ldap_pvt_thread_key_t key ) +{ + return( 0 ); +} + +int +ldap_pvt_thread_key_setdata( ldap_pvt_thread_key_t key, void *data ) +{ + return cthread_setspecific( key, data ); +} + +int +ldap_pvt_thread_key_getdata( ldap_pvt_thread_key_t key, void **data ) +{ + return cthread_getspecific( key, data ); +} + #endif /* HAVE_MACH_CTHREADS */