From: <kk...@us...> - 2008-10-17 09:26:17
|
Revision: 1110 http://omc.svn.sourceforge.net/omc/?rev=1110&view=rev Author: kkaempf Date: 2008-10-17 08:32:52 +0000 (Fri, 17 Oct 2008) Log Message: ----------- move thread locking outside of call_provider, so we have just a single lock/unlock for each MI call Modified Paths: -------------- cmpi-bindings/trunk/src/cmpi_provider.c cmpi-bindings/trunk/src/target_python.c Modified: cmpi-bindings/trunk/src/cmpi_provider.c =================================================================== --- cmpi-bindings/trunk/src/cmpi_provider.c 2008-10-16 17:24:00 UTC (rev 1109) +++ cmpi-bindings/trunk/src/cmpi_provider.c 2008-10-17 08:32:52 UTC (rev 1110) @@ -329,15 +329,14 @@ _context = SWIG_NewPointerObj((void*) context, SWIGTYPE_p__CMPIContext, 0); _result = SWIG_NewPointerObj((void*) result, SWIGTYPE_p__CMPIResult, 0); _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "enum_instance_names", 3, _context, _result, _reference); - - _SBLIM_TRACE(1,("EnumInstanceNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("EnumInstanceNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -372,15 +371,14 @@ _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); _properties = proplist2target(properties); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "enum_instances", 4, _context, _result, _reference, _properties); - - _SBLIM_TRACE(1,("EnumInstances() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("EnumInstances() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -414,15 +412,14 @@ _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); _properties = proplist2target(properties); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "get_instance", 4, _context, _result, _reference, _properties); - - _SBLIM_TRACE(1,("GetInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("GetInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -444,7 +441,7 @@ Target_Type _reference; Target_Type _newinst; - CMPIStatus status = {CMPI_RC_ERR_NOT_SUPPORTED, NULL}; /* Return status of CIM operations. */ + CMPIStatus status = {CMPI_RC_ERR_NOT_SUPPORTED, NULL}; /* Return status of CIM operations. */ /* Creating new instances is not supported for this class. */ @@ -458,16 +455,15 @@ _result = SWIG_NewPointerObj((void*) results, SWIGTYPE_p__CMPIResult, 0); _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); _newinst = SWIG_NewPointerObj((void*) newinstance, SWIGTYPE_p__CMPIInstance, 0); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "create_instance", 4, _context, _result, _reference, _newinst); - - _SBLIM_TRACE(1,("CreateInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("CreateInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -509,16 +505,15 @@ _newinst = SWIG_NewPointerObj((void*) newinstance, SWIGTYPE_p__CMPIInstance, 0); plist = proplist2target(properties); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "set_instance", 5, _context, _result, _reference, _newinst, plist); - - _SBLIM_TRACE(1,("SetInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("SetInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -547,15 +542,14 @@ _context = SWIG_NewPointerObj((void*) context, SWIGTYPE_p__CMPIContext, 0); _result = SWIG_NewPointerObj((void*) results, SWIGTYPE_p__CMPIResult, 0); _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "delete_instance", 3, _context, _result, _reference); - - _SBLIM_TRACE(1,("DeleteInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("DeleteInstance() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -590,7 +584,6 @@ _reference = SWIG_NewPointerObj((void*) reference, SWIGTYPE_p__CMPIObjectPath, 0); _query = string2target(query); _lang = string2target(language); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "exec_query", 5, _context, @@ -598,11 +591,12 @@ _reference, _query, _lang); + TARGET_THREAD_END_BLOCK; - /* Query filtering is not supported for this class. */ + /* Query filtering is not supported for this class. */ - _SBLIM_TRACE(1,("ExecQuery() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + _SBLIM_TRACE(1,("ExecQuery() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -663,7 +657,6 @@ { _resultRole = string2target(resultRole); } - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "associator_names", 7, _ctx, @@ -673,10 +666,9 @@ _resultClass, _role, _resultRole); - - - _SBLIM_TRACE(1,("associatorNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("associatorNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } /* @@ -735,7 +727,6 @@ { _resultRole = string2target(resultRole); } - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "associators", 8, _ctx, @@ -745,11 +736,11 @@ _resultClass, _role, _resultRole, - _props); + _props); - - _SBLIM_TRACE(1,("associators() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("associators() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } /* @@ -791,7 +782,6 @@ { _resultClass = string2target(resultClass); } - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "reference_names", 5, _ctx, @@ -800,9 +790,9 @@ _resultClass, _role); - - _SBLIM_TRACE(1,("referenceNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("referenceNames() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -848,7 +838,6 @@ _resultClass = string2target(resultClass); } _props = proplist2target(properties); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "references", 6, _ctx, @@ -857,9 +846,9 @@ _resultClass, _role, _props); - - _SBLIM_TRACE(1,("references() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("references() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } /* @@ -896,17 +885,16 @@ _out = SWIG_NewPointerObj((void*) out, SWIGTYPE_p__CMPIArgs, 0); _method = string2target(method); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "invoke_method", 6, _ctx, _rslt, _objName, _method, _in, - _out); - - _SBLIM_TRACE(1,("invokeMethod() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + _out); + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("invokeMethod() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -941,16 +929,15 @@ _className = string2target(className); _owner = string2target(owner); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "authorize_filter", 5, _ctx, _filter, _className, _classPath, _owner); - - _SBLIM_TRACE(1,("authorizeFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("authorizeFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -984,16 +971,15 @@ _firstActivation = Target_Bool(firstActivation); _className = string2target(className); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "activate_filter", 5, _ctx, _filter, _className, _classPath, _firstActivation); - - _SBLIM_TRACE(1,("activateFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("activateFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -1027,16 +1013,15 @@ _lastActivation = Target_Bool(lastActivation); _className = string2target(className); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "deactivate_filter", 5, _ctx, _filter, _className, _classPath, _lastActivation); - - _SBLIM_TRACE(1,("deActivateFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("deActivateFilter() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -1072,16 +1057,15 @@ _classPath = SWIG_NewPointerObj((void*) classPath, SWIGTYPE_p__CMPIObjectPath, 0); _className = string2target(className); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "must_poll", 4, _ctx, //_rslt, _filter, _className, _classPath); - - _SBLIM_TRACE(1,("mustPoll() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("mustPoll() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -1103,13 +1087,12 @@ TARGET_THREAD_BEGIN_BLOCK; _ctx = SWIG_NewPointerObj((void*) ctx, SWIGTYPE_p__CMPIContext, 0); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "enable_indications", 1, _ctx); - _SBLIM_TRACE(1,("enableIndications() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; - + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("enableIndications() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } @@ -1131,12 +1114,12 @@ TARGET_THREAD_BEGIN_BLOCK; _ctx = SWIG_NewPointerObj((void*) ctx, SWIGTYPE_p__CMPIContext, 0); - TARGET_THREAD_END_BLOCK; call_provider((ProviderMIHandle*)self->hdl, &status, "disable_indications", 1, _ctx); - _SBLIM_TRACE(1,("disableIndications() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); - return status; + TARGET_THREAD_END_BLOCK; + _SBLIM_TRACE(1,("disableIndications() %s", (status.rc == CMPI_RC_OK)? "succeeded":"failed")); + return status; } Modified: cmpi-bindings/trunk/src/target_python.c =================================================================== --- cmpi-bindings/trunk/src/target_python.c 2008-10-16 17:24:00 UTC (rev 1109) +++ cmpi-bindings/trunk/src/target_python.c 2008-10-17 08:32:52 UTC (rev 1110) @@ -174,6 +174,7 @@ /* * call_provider * + * ** must be called while holding the threads lock ** */ static int @@ -185,7 +186,6 @@ PyObject *pyargs = NULL; PyObject *pyfunc = NULL; PyObject *prv = NULL; - TARGET_THREAD_BEGIN_BLOCK; pyargs = PyTuple_New(nargs); pyfunc = PyObject_GetAttrString(hdl->instance, opname); @@ -279,15 +279,17 @@ } else { + char *msg = PyString_AsString(prstr); + TARGET_THREAD_BEGIN_ALLOW; st->msg = hdl->broker->eft->newString(hdl->broker, - PyString_AsString(prstr), NULL); + msg, NULL); + TARGET_THREAD_END_ALLOW; } rc = pi != 0; cleanup: Py_DecRef(pyargs); Py_DecRef(pyfunc); Py_DecRef(prv); - TARGET_THREAD_END_BLOCK; return rc; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |