+bool IOMachPort::noMoreSendersForObject( OSObject * obj,
+ ipc_kobject_type_t type, mach_port_mscount_t * mscount )
+{
+ OSDictionary * dict;
+ IOMachPort * machPort;
+ bool destroyed = true;
+
+ IOTakeLock( gIOObjectPortLock);
+
+ if( (dict = dictForType( type ))) {
+ obj->retain();
+
+ machPort = (IOMachPort *) dict->getObject( (const OSSymbol *) obj );
+ if( machPort) {
+ destroyed = (machPort->mscount == *mscount);
+ if( destroyed)
+ dict->removeObject( (const OSSymbol *) obj );
+ else
+ *mscount = machPort->mscount;
+ }
+ obj->release();
+ }
+
+ IOUnlock( gIOObjectPortLock);
+
+ return( destroyed );
+}
+