version 1.10, 2006/01/30 16:18:05
|
version 1.10.14.1, 2006/07/27 23:12:06
|
|
|
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
PEGASUS_THREAD_KEY_TYPE CMPI_ThreadContext::contextKey; |
TSDKeyType CMPI_ThreadContext::contextKey; |
int CMPI_ThreadContext::context_key_once=1; | int CMPI_ThreadContext::context_key_once=1; |
| |
void CMPI_ThreadContext::context_key_alloc() | void CMPI_ThreadContext::context_key_alloc() |
{ | { |
pegasus_key_create(&contextKey); |
TSDKey::create(&contextKey); |
} | } |
| |
PEGASUS_THREAD_KEY_TYPE CMPI_ThreadContext::getContextKey() |
TSDKeyType CMPI_ThreadContext::getContextKey() |
{ | { |
if (context_key_once) { | if (context_key_once) { |
context_key_alloc(); | context_key_alloc(); |
|
|
} | } |
| |
CMPI_ThreadContext* CMPI_ThreadContext::getThreadContext() { | CMPI_ThreadContext* CMPI_ThreadContext::getThreadContext() { |
PEGASUS_THREAD_KEY_TYPE k=getContextKey(); |
TSDKeyType k=getContextKey(); |
#ifndef PEGASUS_PLATFORM_ZOS_ZSERIES_IBM | #ifndef PEGASUS_PLATFORM_ZOS_ZSERIES_IBM |
return (CMPI_ThreadContext*)pegasus_get_thread_specific(k); |
return (CMPI_ThreadContext*)TSDKey::get_thread_specific(k); |
#else | #else |
CMPI_ThreadContext* tCtx=NULL; | CMPI_ThreadContext* tCtx=NULL; |
pthread_getspecific(k,(void**)&tCtx); | pthread_getspecific(k,(void**)&tCtx); |
|
|
CIMfirst=CIMlast=NULL; | CIMfirst=CIMlast=NULL; |
broker=mb; | broker=mb; |
context=ctx; | context=ctx; |
PEGASUS_THREAD_KEY_TYPE k=getContextKey(); |
TSDKeyType k=getContextKey(); |
#ifndef PEGASUS_PLATFORM_ZOS_ZSERIES_IBM | #ifndef PEGASUS_PLATFORM_ZOS_ZSERIES_IBM |
prev=(CMPI_ThreadContext*)pegasus_get_thread_specific(k); |
prev=(CMPI_ThreadContext*)TSDKey::get_thread_specific(k); |
#else | #else |
pthread_getspecific(k,(void**)&prev); | pthread_getspecific(k,(void**)&prev); |
#endif | #endif |
pegasus_set_thread_specific(k,this); |
TSDKey::set_thread_specific(k,this); |
return; | return; |
} | } |
| |
|
|
((CMPIInstance*)cur)->ft->release((CMPIInstance*)cur); | ((CMPIInstance*)cur)->ft->release((CMPIInstance*)cur); |
} | } |
| |
PEGASUS_THREAD_KEY_TYPE k=getContextKey(); |
TSDKeyType k=getContextKey(); |
pegasus_set_thread_specific(k,prev); |
TSDKey::set_thread_specific(k,prev); |
} | } |
| |
| |