• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/iokit/Kernel/

Lines Matching refs:vars

375 IOHibernatePollerProbe(IOPolledFileIOVars * vars, IOService * target)
381 for (idx = vars->pollers->getCount() - 1; idx >= 0; idx--)
383 poller = (IOPolledInterface *) vars->pollers->getObject(idx);
396 IOHibernatePollerOpen(IOPolledFileIOVars * vars, uint32_t state, IOMemoryDescriptor * md)
402 for (idx = vars->pollers->getCount() - 1; idx >= 0; idx--)
404 poller = (IOPolledInterface *) vars->pollers->getObject(idx);
417 IOHibernatePollerClose(IOPolledFileIOVars * vars, uint32_t state)
424 (poller = (IOPolledInterface *) vars->pollers->getObject(idx));
441 IOPolledFileIOVars * vars = (IOPolledFileIOVars *) parameter;
443 vars->ioStatus = status;
447 IOHibernatePollerIO(IOPolledFileIOVars * vars,
458 completion.parameter = vars;
460 vars->ioStatus = -1;
462 poller = (IOPolledInterface *) vars->pollers->getObject(0);
463 err = poller->startIO(operation, bufferOffset, deviceOffset + vars->block0, length, completion);
471 IOHibernatePollerIODone(IOPolledFileIOVars * vars, bool abortable)
477 while (-1 == vars->ioStatus)
480 (poller = (IOPolledInterface *) vars->pollers->getObject(idx));
498 err = vars->ioStatus;
513 IOHibernateVars * vars = &gIOHibernateVars;
515 if (!vars->fileVars || !vars->fileVars->pollers)
519 (poller = (IOPolledInterface *) vars->fileVars->pollers->getObject(idx));
557 IOPolledFileIOVars * vars;
567 vars = &gFileVars;
574 vars->io = false;
575 vars->buffer = (uint8_t *) ioBuffer->getBytesNoCopy();
576 vars->bufferHalf = 0;
577 vars->bufferOffset = 0;
578 vars->bufferSize = ioBuffer->getLength() >> 1;
584 vars->fileRef = kern_open_file_for_direct_io(filename,
587 &vars->block0,
589 if (!vars->fileRef)
595 vars->block0, maxiobytes);
602 if (maxiobytes < vars->bufferSize)
603 vars->bufferSize = maxiobytes;
605 vars->extentMap = (IOPolledFileExtent *) extentsData->getBytesNoCopy();
641 vars->pollers = OSArray::withCapacity(4);
642 if (!vars->pollers)
645 vars->blockSize = 512;
655 vars->pollers->flushCollection();
659 vars->pollers->setObject(poller);
661 vars->blockSize = num->unsigned32BitValue();
668 major, minor, vars->blockSize, vars->pollers->getCount());
669 if (vars->pollers->getCount() < kIOHibernateMinPollersNeeded)
672 err = IOHibernatePollerProbe(vars, (IOService *) part);
676 err = IOHibernatePollerOpen(vars, kIOPolledPreflightState, ioBuffer);
680 *fileVars = vars;
693 snprintf(str2, sizeof(str2), "%qx", vars->extentMap[0].start);
707 snprintf(str2, sizeof(str2), ",%qx", vars->extentMap[0].start);
727 if (vars->fileRef)
728 kern_close_file_for_direct_io(vars->fileRef);
738 IOPolledFileClose( IOPolledFileIOVars * vars )
740 if (vars->pollers)
742 IOHibernatePollerClose(vars, kIOPolledPostflightState);
743 vars->pollers->release();
746 gIOHibernateFileRef = vars->fileRef;
748 bzero(vars, sizeof(IOPolledFileIOVars));
754 IOPolledFileSeek(IOPolledFileIOVars * vars, uint64_t position)
758 extentMap = vars->extentMap;
760 vars->position = position;
768 vars->currentExtent = extentMap;
769 vars->extentRemaining = extentMap->length - position;
770 vars->extentPosition = vars->position - position;
772 if (vars->bufferSize <= vars->extentRemaining)
773 vars->bufferLimit = vars->bufferSize;
775 vars->bufferLimit = vars->extentRemaining;
781 IOPolledFileWrite(IOPolledFileIOVars * vars,
794 size = vars->position & (vars->blockSize - 1);
796 size = vars->blockSize - size;
799 bytes = vars->buffer + vars->bufferOffset;
802 copy = vars->bufferLimit - vars->bufferOffset;
810 bcopy(bytes, vars->buffer + vars->bufferHalf + vars->bufferOffset, copy);
814 bzero(vars->buffer + vars->bufferHalf + vars->bufferOffset, copy);
817 vars->bufferOffset += copy;
818 vars->position += copy;
820 if (flush && vars->bufferOffset)
822 uint64_t offset = (vars->position - vars->bufferOffset
823 - vars->extentPosition + vars->currentExtent->start);
824 uint32_t length = (vars->bufferOffset);
827 if (cryptvars && vars->encryptStart && (vars->position > vars->encryptStart))
830 encryptLen = vars->position - vars->encryptStart;
836 aes_encrypt_cbc(vars->buffer + vars->bufferHalf + encryptStart,
839 vars->buffer + vars->bufferHalf + encryptStart,
842 bcopy(vars->buffer + vars->bufferHalf + encryptStart + encryptLen - AES_BLOCK_SIZE,
848 if (vars->io)
850 err = IOHibernatePollerIODone(vars, true);
855 if (vars->position & (vars->blockSize - 1)) HIBLOG("misaligned file pos %qx\n", vars->position);
856 //if (length != vars->bufferSize) HIBLOG("short write of %qx ends@ %qx\n", length, offset + length);
858 err = IOHibernatePollerIO(vars, kIOPolledWrite, vars->bufferHalf, offset, length);
861 vars->io = true;
863 vars->extentRemaining -= vars->bufferOffset;
864 if (!vars->extentRemaining)
866 vars->currentExtent++;
867 vars->extentRemaining = vars->currentExtent->length;
868 vars->extentPosition = vars->position;
869 if (!vars->extentRemaining)
876 vars->bufferHalf = vars->bufferHalf ? 0 : vars->bufferSize;
877 vars->bufferOffset = 0;
878 if (vars->bufferSize <= vars->extentRemaining)
879 vars->bufferLimit = vars->bufferSize;
881 vars->bufferLimit = vars->extentRemaining;
892 IOPolledFileRead(IOPolledFileIOVars * vars,
903 copy = vars->bufferLimit - vars->bufferOffset;
909 bcopy(vars->buffer + vars->bufferHalf + vars->bufferOffset, bytes, copy);
913 vars->bufferOffset += copy;
914 // vars->position += copy;
916 if (vars->bufferOffset == vars->bufferLimit)
918 if (vars->io)
920 err = IOHibernatePollerIODone(vars, false);
927 if (vars->position & (vars->blockSize - 1)) HIBLOG("misaligned file pos %qx\n", vars->position);
929 vars->position += vars->lastRead;
930 vars->extentRemaining -= vars->lastRead;
931 vars->bufferLimit = vars->lastRead;
933 if (!vars->extentRemaining)
935 vars->currentExtent++;
936 vars->extentRemaining = vars->currentExtent->length;
937 vars->extentPosition = vars->position;
938 if (!vars->extentRemaining)
946 uint64_t lastReadLength = vars->lastRead;
947 uint64_t offset = (vars->position
948 - vars->extentPosition + vars->currentExtent->start);
949 if (vars->extentRemaining <= vars->bufferSize)
950 length = vars->extentRemaining;
952 length = vars->bufferSize;
953 vars->lastRead = length;
955 //if (length != vars->bufferSize) HIBLOG("short read of %qx ends@ %qx\n", length, offset + length);
957 err = IOHibernatePollerIO(vars, kIOPolledRead, vars->bufferHalf, offset, length);
960 vars->io = true;
962 vars->bufferHalf = vars->bufferHalf ? 0 : vars->bufferSize;
963 vars->bufferOffset = 0;
971 bcopy(vars->buffer + vars->bufferHalf + lastReadLength - AES_BLOCK_SIZE,
974 aes_decrypt_cbc(vars->buffer + vars->bufferHalf,
977 vars->buffer + vars->bufferHalf,
1000 IOHibernateVars * vars = &gIOHibernateVars;
1002 if (vars->fileVars && vars->fileVars->fileRef)
1080 vars->srcBuffer = IOBufferMemoryDescriptor::withOptions(kIODirectionOutIn,
1082 vars->ioBuffer = IOBufferMemoryDescriptor::withOptions(kIODirectionOutIn,
1085 if (!vars->srcBuffer || !vars->ioBuffer)
1091 err = IOPolledFileOpen(gIOHibernateFilename, vars->ioBuffer,
1092 &vars->fileVars, &vars->fileExtents, &data);
1098 if (vars->fileVars->fileRef)
1102 int err = kern_write_file(vars->fileVars->fileRef, 0,
1113 &vars->page_list, &vars->page_list_wired, &encryptedswap);
1123 vars->videoAllocSize = kVideoMapSize;
1124 if (KERN_SUCCESS != kmem_alloc_pageable(kernel_map, &vars->videoMapping, vars->videoAllocSize))
1125 vars->videoMapping = 0;
1128 for (uint32_t i = 0; i < sizeof(vars->wiredCryptKey); i++)
1129 vars->wiredCryptKey[i] = random();
1130 for (uint32_t i = 0; i < sizeof(vars->cryptKey); i++)
1131 vars->cryptKey[i] = random();
1162 vars->saveBootDevice = gIOOptionsEntry->copyProperty(kIOSelectedBootDeviceKey);
1180 vars->haveFastBoot = true;
1212 bcopy(&vars->wiredCryptKey[0], &rtcVars.wiredCryptKey[0], sizeof(rtcVars.wiredCryptKey));
1247 gIOOptionsEntry->setProperty(sym, data); /* intentional insecure backup of rtc boot vars */
1264 data = OSData::withBytes(&vars->wiredCryptKey[0], sizeof(vars->wiredCryptKey));
1302 if (!vars->haveFastBoot)
1307 &vars->saveBootAudioVolume, sizeof(vars->saveBootAudioVolume))))
1310 newVolume = vars->saveBootAudioVolume & 0xf8;
1450 IOHibernateVars * vars = &gIOHibernateVars;
1455 vars->previewBuffer = OSDynamicCast(IOMemoryDescriptor, obj);
1456 if (obj && !vars->previewBuffer)
1459 vars->consoleMapping = NULL;
1460 if (vars->previewBuffer && (kIOReturnSuccess != vars->previewBuffer->prepare()))
1462 vars->previewBuffer->release();
1463 vars->previewBuffer = 0;
1466 if (vars->previewBuffer && (data = OSDynamicCast(OSData,
1485 vars->consoleMapping = (uint8_t *) consoleInfo.v_baseAddr;
1488 vars->consoleMapping, gIOHibernateGraphicsInfo->depth,
1490 if (vars->consoleMapping)
1491 ProgressInit(graphicsInfo, vars->consoleMapping,
1507 IOHibernateVars * vars = &gIOHibernateVars;
1509 hibernate_teardown(vars->page_list, vars->page_list_wired);
1511 if (vars->videoMapping)
1513 if (vars->videoMapSize)
1515 IOUnmapPages(kernel_map, vars->videoMapping, vars->videoMapSize);
1516 if (vars->videoAllocSize)
1518 kmem_free(kernel_map, trunc_page_32(vars->videoMapping), vars->videoAllocSize);
1521 if (vars->previewBuffer)
1523 vars->previewBuffer->release();
1524 vars->previewBuffer = 0;
1527 if (vars->fileVars)
1529 IOPolledFileClose(vars->fileVars);
1547 if (vars->saveBootDevice)
1549 gIOOptionsEntry->setProperty(sym, vars->saveBootDevice);
1550 vars->saveBootDevice->release();
1572 if (!vars->haveFastBoot)
1578 &vars->saveBootAudioVolume, sizeof(vars->saveBootAudioVolume));
1610 if (vars->srcBuffer)
1611 vars->srcBuffer->release();
1612 if (vars->ioBuffer)
1613 vars->ioBuffer->release();
1614 if (vars->fileExtents)
1615 vars->fileExtents->release();
1617 bzero(vars, sizeof(*vars));
1694 IOHibernateVars * vars = &gIOHibernateVars;
1725 if (!vars->fileVars || !vars->fileVars->pollers || !vars->fileExtents)
1740 aes_encrypt_key(vars->cryptKey,
1743 aes_decrypt_key(vars->cryptKey,
1749 aes_encrypt_key(vars->wiredCryptKey,
1754 bzero(&vars->wiredCryptKey[0], sizeof(vars->wiredCryptKey));
1755 bzero(&vars->cryptKey[0], sizeof(vars->cryptKey));
1762 hibernate_page_list_setall(vars->page_list,
1763 vars->page_list_wired,
1768 fileExtents = (IOPolledFileExtent *) vars->fileExtents->getBytesNoCopy();
1771 count = vars->fileExtents->getLength() / sizeof(IOPolledFileExtent);
1794 IOPolledFileSeek(vars->fileVars, sizeof(IOHibernateImageHeader));
1798 err = IOHibernatePollerOpen(vars->fileVars, kIOPolledBeforeSleepState, vars->ioBuffer);
1806 count = vars->fileExtents->getLength();
1810 err = IOPolledFileWrite(vars->fileVars,
1843 err = IOPolledFileWrite(vars->fileVars, src, count, cryptvars);
1847 err = IOPolledFileWrite(vars->fileVars,
1857 err = IOPolledFileWrite(vars->fileVars, src, count, cryptvars);
1867 if (vars->previewBuffer)
1873 phys64 = vars->previewBuffer->getPhysicalSegment64(count, &segLen);
1876 err = IOPolledFileWrite(vars->fileVars,
1888 src = (uint8_t *) vars->previewBuffer->getSourceSegment(0, NULL);
1889 count = vars->previewBuffer->getLength();
1897 err = IOPolledFileWrite(vars->fileVars, src, count, cryptvars);
1905 (phys64 = vars->ioBuffer->getPhysicalSegment64(count, &segLen));
1908 hibernate_set_page_state(vars->page_list, vars->page_list_wired,
1915 (phys64 = vars->srcBuffer->getPhysicalSegment64(count, &segLen));
1918 hibernate_set_page_state(vars->page_list, vars->page_list_wired,
1926 bitmap_size = vars->page_list_wired->list_size;
1927 src = (uint8_t *) vars->page_list_wired;
1928 err = IOPolledFileWrite(vars->fileVars, src, bitmap_size, cryptvars);
1935 hibernate_page_list_set_volatile(vars->page_list, vars->page_list_wired, &pageCount);
1939 hibernate_set_page_state(vars->page_list, vars->page_list_wired,
1944 if (vars->previewBuffer) for (count = 0;
1945 (phys64 = vars->previewBuffer->getPhysicalSegment64(count, &segLen));
1948 hibernate_set_page_state(vars->page_list, vars->page_list_wired,
1954 src = (uint8_t *) vars->srcBuffer->getBytesNoCopy();
1964 count = hibernate_page_list_iterate(pageType ? vars->page_list : vars->page_list_wired,
1972 err = IOPolledFileWrite(vars->fileVars,
1980 err = IOMemoryDescriptorWriteFromPhysical(vars->srcBuffer, 0, ptoa_64(ppnum), page_size);
2021 vars->fileVars->encryptStart = (vars->fileVars->position + AES_BLOCK_SIZE - 1)
2026 err = IOPolledFileWrite(vars->fileVars, (const uint8_t *) &tag, sizeof(tag), cryptvars);
2030 err = IOPolledFileWrite(vars->fileVars, data, (pageCompressedSize + 3) & ~3, cryptvars);
2040 if (vars->consoleMapping && (0 == (1023 & pagesDone)))
2045 ProgressUpdate(gIOHibernateGraphicsInfo, vars->consoleMapping, lastBlob, blob);
2066 err = IOPolledFileWrite(vars->fileVars, 0, 0, cryptvars);
2073 image1Size = vars->fileVars->position;
2087 err = IOPolledFileWrite(vars->fileVars, 0, 0, cryptvars);
2093 header->imageSize = vars->fileVars->position;
2097 header->encryptStart = vars->fileVars->encryptStart;
2103 count = vars->fileExtents->getLength();
2113 IOPolledFileSeek(vars->fileVars, 0);
2114 err = IOPolledFileWrite(vars->fileVars,
2119 err = IOPolledFileWrite(vars->fileVars, 0, 0, cryptvars);
2122 err = IOHibernatePollerIODone(vars->fileVars, true);
2148 if (vars->fileVars->io)
2149 (void) IOHibernatePollerIODone(vars->fileVars, false);
2152 IOHibernatePollerClose(vars->fileVars, kIOPolledBeforeSleepState);
2154 if (vars->consoleMapping)
2156 vars->consoleMapping, 0, kIOHibernateProgressCount);
2206 IOHibernateVars * vars = &gIOHibernateVars;
2208 if (!vars->fileVars || !vars->fileVars->pollers || !vars->fileExtents)
2233 hibernate_page_list_discard(vars->page_list);
2237 if (vars->videoMapping
2241 vars->videoMapSize = round_page(gIOHibernateGraphicsInfo->height
2244 vars->videoMapping, gIOHibernateGraphicsInfo->physicalAddress,
2245 vars->videoMapSize, kIOMapInhibitCache );
2248 uint8_t * src = (uint8_t *) vars->srcBuffer->getBytesNoCopy();
2252 err = IOMemoryDescriptorWriteFromPhysical(vars->srcBuffer, 0, ptoa_64(gIOHibernateWakeMap),
2266 err = IOHibernatePollerOpen(vars->fileVars, kIOPolledAfterSleepState, 0);
2275 IOPolledFileSeek(vars->fileVars, gIOHibernateCurrentHeader->image1Size);
2277 if (vars->videoMapSize)
2279 lastBlob = ((vars->fileVars->position - progressZeroPosition) * kIOHibernateProgressCount)
2281 ProgressUpdate(gIOHibernateGraphicsInfo, (uint8_t *) vars->videoMapping, 0, lastBlob);
2294 vars->fileVars->io = false;
2295 vars->fileVars->bufferHalf = 0;
2296 vars->fileVars->bufferLimit = 0;
2297 vars->fileVars->lastRead = 0;
2298 vars->fileVars->bufferOffset = vars->fileVars->bufferLimit;
2300 IOPolledFileRead(vars->fileVars, 0, 0, cryptvars);
2301 vars->fileVars->bufferOffset = vars->fileVars->bufferLimit;
2316 err = IOPolledFileRead(vars->fileVars, src, 8, cryptvars);
2330 err = IOPolledFileRead(vars->fileVars, (uint8_t *) &tag, 4, cryptvars);
2348 err = IOPolledFileRead(vars->fileVars, src, (compressedSize + 3) & ~3, cryptvars);
2362 err = IOMemoryDescriptorReadToPhysical(vars->srcBuffer, decoOffset, ptoa_64(ppnum), page_size);
2372 if (vars->videoMapSize && (0 == (1023 & pagesDone)))
2374 blob = ((vars->fileVars->position - progressZeroPosition) * kIOHibernateProgressCount)
2378 ProgressUpdate(gIOHibernateGraphicsInfo, (uint8_t *) vars->videoMapping, lastBlob, blob);
2405 if (vars->fileVars->io)
2406 (void) IOHibernatePollerIODone(vars->fileVars, false);
2408 err = IOHibernatePollerClose(vars->fileVars, kIOPolledAfterSleepState);
2410 if (vars->videoMapSize)
2412 (uint8_t *) vars->videoMapping, 0, kIOHibernateProgressCount);