Lines Matching refs:queue
268 IOTrackingQueue * queue; member
354 IOTrackingQueue * queue; in IOTrackingQueueAlloc() local
360 queue = kalloc_type(IOTrackingQueue, queue_head_t, numSiteQs, Z_WAITOK_ZERO); in IOTrackingQueueAlloc()
361 queue->name = name; in IOTrackingQueueAlloc()
362 queue->btEntry = btEntry; in IOTrackingQueueAlloc()
363 queue->allocSize = allocSize; in IOTrackingQueueAlloc()
364 queue->minCaptureSize = minCaptureSize; in IOTrackingQueueAlloc()
365 queue->lock.mutex = lck_mtx_alloc_init(IOLockGroup, LCK_ATTR_NULL); in IOTrackingQueueAlloc()
366 queue->numSiteQs = numSiteQs; in IOTrackingQueueAlloc()
367 queue->type = type; in IOTrackingQueueAlloc()
369 queue->captureOn = (kFlags == (kFlags & gIOKitDebug)) in IOTrackingQueueAlloc()
373 queue_init(&queue->sites[idx]); in IOTrackingQueueAlloc()
377 queue_enter(&gIOTrackingQ, queue, IOTrackingQueue *, link); in IOTrackingQueueAlloc()
380 return queue; in IOTrackingQueueAlloc()
384 IOTrackingQueueCollectUser(IOTrackingQueue * queue) in IOTrackingQueueCollectUser() argument
386 assert(0 == queue->siteCount); in IOTrackingQueueCollectUser()
387 queue->type |= kIOTrackingQueueTypeUser; in IOTrackingQueueCollectUser()
393 IOTrackingQueueFree(IOTrackingQueue * queue) in IOTrackingQueueFree() argument
396 IOTrackingReset(queue); in IOTrackingQueueFree()
397 remque(&queue->link); in IOTrackingQueueFree()
400 lck_mtx_free(queue->lock.mutex, IOLockGroup); in IOTrackingQueueFree()
402 kfree_type(IOTrackingQueue, queue_head_t, queue->numSiteQs, queue); in IOTrackingQueueFree()
496 IOTrackingAddUser(IOTrackingQueue * queue, IOTrackingUser * mem, vm_size_t size) in IOTrackingAddUser() argument
501 if (!queue->captureOn) { in IOTrackingAddUser()
504 if (size < queue->minCaptureSize) { in IOTrackingAddUser()
523 IOTRecursiveLockLock(&queue->lock); in IOTrackingAddUser()
524 queue_enter/*last*/ (&queue->sites[0], mem, IOTrackingUser *, link); in IOTrackingAddUser()
525 queue->siteCount++; in IOTrackingAddUser()
526 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingAddUser()
530 IOTrackingRemoveUser(IOTrackingQueue * queue, IOTrackingUser * mem) in IOTrackingRemoveUser() argument
536 IOTRecursiveLockLock(&queue->lock); in IOTrackingRemoveUser()
539 assert(queue->siteCount); in IOTrackingRemoveUser()
540 queue->siteCount--; in IOTrackingRemoveUser()
542 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingRemoveUser()
548 IOTrackingAdd(IOTrackingQueue * queue, IOTracking * mem, size_t size, bool address, vm_tag_t tag) in IOTrackingAdd() argument
562 if (!queue->captureOn) { in IOTrackingAdd()
565 if (size < queue->minCaptureSize) { in IOTrackingAdd()
569 user = (0 != (kIOTrackingQueueTypeUser & queue->type)); in IOTrackingAdd()
594 IOTRecursiveLockLock(&queue->lock); in IOTrackingAdd()
595 que = &queue->sites[crc % queue->numSiteQs]; in IOTrackingAdd()
620 site->queue = queue; in IOTrackingAdd()
638 queue->siteCount++; in IOTrackingAdd()
646 site->addresses = kalloc_type(IOTracking *, queue->numSiteQs, Z_WAITOK_ZERO_NOFAIL); in IOTrackingAdd()
647 for (hashIdx = 0; hashIdx < queue->numSiteQs; hashIdx++) { in IOTrackingAdd()
651 hashIdx = atop(memAddr->address) % queue->numSiteQs; in IOTrackingAdd()
666 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingAdd()
672 IOTrackingRemoveInternal(IOTrackingQueue * queue, IOTracking * mem, size_t size, uint32_t addressId… in IOTrackingRemoveInternal() argument
681 IOTRecursiveLockLock(&queue->lock); in IOTrackingRemoveInternal()
689 && (addressIdx != (atop(nextAddress->address) % queue->numSiteQs))) { in IOTrackingRemoveInternal()
706 assert(queue->siteCount); in IOTrackingRemoveInternal()
707 queue->siteCount--; in IOTrackingRemoveInternal()
708 IOTrackingFreeCallSite(queue->type, &site); in IOTrackingRemoveInternal()
712 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingRemoveInternal()
718 IOTrackingRemove(IOTrackingQueue * queue, IOTracking * mem, size_t size) in IOTrackingRemove() argument
720 return IOTrackingRemoveInternal(queue, mem, size, -1U); in IOTrackingRemove()
726 IOTrackingRemoveAddress(IOTrackingQueue * queue, IOTrackingAddress * mem, size_t size) in IOTrackingRemoveAddress() argument
732 addressIdx = atop(address) % queue->numSiteQs; in IOTrackingRemoveAddress()
734 return IOTrackingRemoveInternal(queue, &mem->tracking, size, addressIdx); in IOTrackingRemoveAddress()
740 IOTrackingAlloc(IOTrackingQueue * queue, uintptr_t address, size_t size) in IOTrackingAlloc() argument
744 if (!queue->captureOn) { in IOTrackingAlloc()
747 if (size < queue->minCaptureSize) { in IOTrackingAlloc()
757 IOTrackingAdd(queue, &tracking->tracking, size, true, VM_KERN_MEMORY_NONE); in IOTrackingAlloc()
763 IOTrackingFree(IOTrackingQueue * queue, uintptr_t address, size_t size) in IOTrackingFree() argument
772 IOTRecursiveLockLock(&queue->lock); in IOTrackingFree()
774 hashIdx = atop(address) % queue->numSiteQs; in IOTrackingFree()
777 for (idx = 0; idx < queue->numSiteQs; idx++) { in IOTrackingFree()
778 queue_iterate(&queue->sites[idx], site, IOTrackingCallSite *, link) in IOTrackingFree()
787 && (hashIdx != (atop(nextAddress->address) % queue->numSiteQs))) { in IOTrackingFree()
794 IOTrackingRemoveInternal(queue, &tracking->tracking, size, -1U); in IOTrackingFree()
808 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingFree()
818 kfree_type(IOTracking *, site->queue->numSiteQs, site->addresses); in IOTrackingFreeCallSite()
831 IOTrackingAccumSize(IOTrackingQueue * queue, IOTracking * mem, size_t size) in IOTrackingAccumSize() argument
833 IOTRecursiveLockLock(&queue->lock); in IOTrackingAccumSize()
840 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingAccumSize()
846 IOTrackingReset(IOTrackingQueue * queue) in IOTrackingReset() argument
855 IOTRecursiveLockLock(&queue->lock); in IOTrackingReset()
856 for (idx = 0; idx < queue->numSiteQs; idx++) { in IOTrackingReset()
857 while (!queue_empty(&queue->sites[idx])) { in IOTrackingReset()
858 if (kIOTrackingQueueTypeMap & queue->type) { in IOTrackingReset()
859 queue_remove_first(&queue->sites[idx], user, IOTrackingUser *, link); in IOTrackingReset()
862 queue_remove_first(&queue->sites[idx], site, IOTrackingCallSite *, link); in IOTrackingReset()
867 for (hashIdx = 0; !addresses && (hashIdx < queue->numSiteQs); hashIdx++) { in IOTrackingReset()
880 IOTrackingFreeCallSite(queue->type, &site); in IOTrackingReset()
884 queue->siteCount = 0; in IOTrackingReset()
885 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingReset()
952 btEntry = site->queue->btEntry; in CopyOutBacktraces()
964 if (kIOTrackingQueueTypeUser & site->queue->type) { in CopyOutBacktraces()
1055 origsize = size = instance->site->queue->allocSize; in IOTrackingLeakScan()
1250 IOTrackingQueue * queue; in IOTrackingDebug() local
1276 queue_iterate(&gIOTrackingQ, queue, IOTrackingQueue *, link) in IOTrackingDebug()
1278 if (SkipName(options, queue->name, namesLen, names)) { in IOTrackingDebug()
1282 if (!(kIOTracking & gIOKitDebug) && (kIOTrackingQueueTypeAlloc & queue->type)) { in IOTrackingDebug()
1289 IOTrackingReset(queue); in IOTrackingDebug()
1297 queue->captureOn = (kIOTrackingStartCapture == selector); in IOTrackingDebug()
1304 queue->minCaptureSize = size; in IOTrackingDebug()
1311 if (!(kIOTrackingQueueTypeAlloc & queue->type)) { in IOTrackingDebug()
1323 IOTRecursiveLockLock(&queue->lock); in IOTrackingDebug()
1324 for (idx = 0; idx < queue->numSiteQs; idx++) { in IOTrackingDebug()
1325 queue_iterate(&queue->sites[idx], site, IOTrackingCallSite *, link) in IOTrackingDebug()
1331 for (uint32_t hashIdx = 0; !addresses && (hashIdx < queue->numSiteQs); hashIdx++) { in IOTrackingDebug()
1353 if (kIOTrackingQueueTypeMap & queue->type) { in IOTrackingDebug()
1365 IOTRecursiveLockLock(&queue->lock); in IOTrackingDebug()
1366 num = queue->siteCount; in IOTrackingDebug()
1368 for (qIdx = 0; qIdx < queue->numSiteQs; qIdx++) { in IOTrackingDebug()
1369 queue_iterate(&queue->sites[qIdx], site, IOTrackingCallSite *, link) in IOTrackingDebug()
1384 if (kIOTrackingQueueTypeAlloc & queue->type) { in IOTrackingDebug()
1391 for (uint32_t hashIdx = 0; !addresses && (hashIdx < queue->numSiteQs); hashIdx++) { in IOTrackingDebug()
1442 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingDebug()
1449 if (!(kIOTrackingQueueTypeMap & queue->type)) { in IOTrackingDebug()
1456 IOTRecursiveLockLock(&queue->lock); in IOTrackingDebug()
1457 num = queue->siteCount; in IOTrackingDebug()
1459 for (qIdx = 0; qIdx < queue->numSiteQs; qIdx++) { in IOTrackingDebug()
1460 queue_iterate(&queue->sites[qIdx], user, IOTrackingUser *, link) in IOTrackingDebug()
1502 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingDebug()
1515 queue_iterate(&gIOTrackingQ, queue, IOTrackingQueue *, link) in IOTrackingDebug()
1517 if (SkipName(options, queue->name, namesLen, names)) { in IOTrackingDebug()
1520 if (!(kIOTrackingQueueTypeAlloc & queue->type)) { in IOTrackingDebug()
1523 IOTRecursiveLockUnlock(&queue->lock); in IOTrackingDebug()