X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/cb3231590a3c94ab4375e2228bd5e86b0cf1ad7e..c3c9b80d004dbbfdf763edeb97968c6997e3b45b:/iokit/Kernel/IOSharedDataQueue.cpp diff --git a/iokit/Kernel/IOSharedDataQueue.cpp b/iokit/Kernel/IOSharedDataQueue.cpp index 71d3c6817..4443e5fa7 100644 --- a/iokit/Kernel/IOSharedDataQueue.cpp +++ b/iokit/Kernel/IOSharedDataQueue.cpp @@ -26,10 +26,13 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define IOKIT_ENABLE_SHARED_PTR + #include #include #include #include +#include #ifdef enqueue #undef enqueue @@ -43,29 +46,28 @@ OSDefineMetaClassAndStructors(IOSharedDataQueue, IODataQueue) -IOSharedDataQueue *IOSharedDataQueue::withCapacity(UInt32 size) +OSSharedPtr +IOSharedDataQueue::withCapacity(UInt32 size) { - IOSharedDataQueue *dataQueue = new IOSharedDataQueue; + OSSharedPtr dataQueue = OSMakeShared(); if (dataQueue) { if (!dataQueue->initWithCapacity(size)) { - dataQueue->release(); - dataQueue = NULL; + return nullptr; } } return dataQueue; } -IOSharedDataQueue * +OSSharedPtr IOSharedDataQueue::withEntries(UInt32 numEntries, UInt32 entrySize) { - IOSharedDataQueue *dataQueue = new IOSharedDataQueue; + OSSharedPtr dataQueue = OSMakeShared(); if (dataQueue) { if (!dataQueue->initWithEntries(numEntries, entrySize)) { - dataQueue->release(); - dataQueue = NULL; + return nullptr; } } @@ -147,10 +149,10 @@ IOSharedDataQueue::free() super::free(); } -IOMemoryDescriptor * +OSSharedPtr IOSharedDataQueue::getMemoryDescriptor() { - IOMemoryDescriptor *descriptor = NULL; + OSSharedPtr descriptor; if (dataQueue != NULL) { descriptor = IOMemoryDescriptor::withAddress(dataQueue, getQueueSize() + DATA_QUEUE_MEMORY_HEADER_SIZE + DATA_QUEUE_MEMORY_APPENDIX_SIZE, kIODirectionOutIn); @@ -182,7 +184,7 @@ IOSharedDataQueue::peek() UInt32 headOffset = dataQueue->head; UInt32 queueSize = getQueueSize(); - if (headOffset >= queueSize) { + if (headOffset > queueSize) { return NULL; }