Refactor all std::lock_guard usages to std::scoped_lock

This commit is contained in:
Billy Laws 2022-04-25 15:00:30 +01:00
parent 94e6f3cfa0
commit 1dd230afde
22 changed files with 87 additions and 87 deletions

View File

@ -23,7 +23,7 @@ namespace skyline::audio {
} }
std::shared_ptr<AudioTrack> Audio::OpenTrack(u8 channelCount, u32 sampleRate, const std::function<void()> &releaseCallback) { std::shared_ptr<AudioTrack> Audio::OpenTrack(u8 channelCount, u32 sampleRate, const std::function<void()> &releaseCallback) {
std::lock_guard trackGuard(trackLock); std::scoped_lock trackGuard{trackLock};
auto track{std::make_shared<AudioTrack>(channelCount, sampleRate, releaseCallback)}; auto track{std::make_shared<AudioTrack>(channelCount, sampleRate, releaseCallback)};
audioTracks.push_back(track); audioTracks.push_back(track);
@ -32,7 +32,7 @@ namespace skyline::audio {
} }
void Audio::CloseTrack(std::shared_ptr<AudioTrack> &track) { void Audio::CloseTrack(std::shared_ptr<AudioTrack> &track) {
std::lock_guard trackGuard(trackLock); std::scoped_lock trackGuard{trackLock};
audioTracks.erase(std::remove(audioTracks.begin(), audioTracks.end(), track), audioTracks.end()); audioTracks.erase(std::remove(audioTracks.begin(), audioTracks.end(), track), audioTracks.end());
} }
@ -43,13 +43,13 @@ namespace skyline::audio {
size_t writtenSamples{}; size_t writtenSamples{};
{ {
std::lock_guard trackGuard(trackLock); std::scoped_lock trackGuard{trackLock};
for (auto &track : audioTracks) { for (auto &track : audioTracks) {
if (track->playbackState == AudioOutState::Stopped) if (track->playbackState == AudioOutState::Stopped)
continue; continue;
std::lock_guard bufferGuard(track->bufferLock); std::scoped_lock bufferGuard{track->bufferLock};
auto trackSamples{track->samples.Read(span(destBuffer, streamSamples), [](i16 *source, i16 *destination) { auto trackSamples{track->samples.Read(span(destBuffer, streamSamples), [](i16 *source, i16 *destination) {
*destination = Saturate<i16, i32>(static_cast<u32>(*destination) + static_cast<u32>(*source)); *destination = Saturate<i16, i32>(static_cast<u32>(*destination) + static_cast<u32>(*source));

View File

@ -29,7 +29,7 @@ namespace skyline {
* @return The amount of data written into the input buffer in units of Type * @return The amount of data written into the input buffer in units of Type
*/ */
size_t Read(span <Type> buffer, void copyFunction(Type *, Type *) = {}, ssize_t copyOffset = -1) { size_t Read(span <Type> buffer, void copyFunction(Type *, Type *) = {}, ssize_t copyOffset = -1) {
std::lock_guard guard(mtx); std::scoped_lock guard{mtx};
if (empty) if (empty)
return 0; return 0;
@ -92,7 +92,7 @@ namespace skyline {
* @brief Appends data from the specified buffer into this buffer * @brief Appends data from the specified buffer into this buffer
*/ */
void Append(span <Type> buffer) { void Append(span <Type> buffer) {
std::lock_guard guard(mtx); std::scoped_lock guard{mtx};
Type *pointer{buffer.data()}; Type *pointer{buffer.data()};
ssize_t size{static_cast<ssize_t>(buffer.size())}; ssize_t size{static_cast<ssize_t>(buffer.size())};

View File

@ -12,7 +12,7 @@ namespace skyline {
} }
void Logger::LoggerContext::Finalize() { void Logger::LoggerContext::Finalize() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
logFile.close(); logFile.close();
} }
@ -23,7 +23,7 @@ namespace skyline {
} }
void Logger::LoggerContext::Flush() { void Logger::LoggerContext::Flush() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
logFile.flush(); logFile.flush();
} }
@ -65,7 +65,7 @@ namespace skyline {
} }
void Logger::LoggerContext::Write(const std::string &str) { void Logger::LoggerContext::Write(const std::string &str) {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
logFile << str; logFile << str;
} }
} }

View File

@ -21,11 +21,11 @@ namespace skyline::gpu {
mirror = alignedMirror.subspan(static_cast<size_t>(guest->data() - alignedData), guest->size()); mirror = alignedMirror.subspan(static_cast<size_t>(guest->data() - alignedData), guest->size());
trapHandle = gpu.state.nce->TrapRegions(*guest, true, [this] { trapHandle = gpu.state.nce->TrapRegions(*guest, true, [this] {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
SynchronizeGuest(true); // We can skip trapping since the caller will do it SynchronizeGuest(true); // We can skip trapping since the caller will do it
WaitOnFence(); WaitOnFence();
}, [this] { }, [this] {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
SynchronizeGuest(true); SynchronizeGuest(true);
dirtyState = DirtyState::CpuDirty; // We need to assume the buffer is dirty since we don't know what the guest is writing dirtyState = DirtyState::CpuDirty; // We need to assume the buffer is dirty since we don't know what the guest is writing
WaitOnFence(); WaitOnFence();
@ -95,7 +95,7 @@ namespace skyline::gpu {
} }
Buffer::~Buffer() { Buffer::~Buffer() {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
if (trapHandle) if (trapHandle)
gpu.state.nce->DeleteTrap(*trapHandle); gpu.state.nce->DeleteTrap(*trapHandle);
SynchronizeGuest(true); SynchronizeGuest(true);

View File

@ -514,7 +514,7 @@ namespace skyline::gpu::interconnect {
} }
void ClearColorRt(TextureView *renderTarget, vk::Rect2D scissor, u32 layerIndex) { void ClearColorRt(TextureView *renderTarget, vk::Rect2D scissor, u32 layerIndex) {
std::lock_guard lock(*renderTarget); std::scoped_lock lock{*renderTarget};
executor.AttachTexture(renderTarget); executor.AttachTexture(renderTarget);
scissor.extent.width = static_cast<u32>(std::min(static_cast<i32>(renderTarget->texture->dimensions.width) - scissor.offset.x, scissor.extent.width = static_cast<u32>(std::min(static_cast<i32>(renderTarget->texture->dimensions.width) - scissor.offset.x,
@ -546,7 +546,7 @@ namespace skyline::gpu::interconnect {
} }
void ClearDepthStencilRt(TextureView *renderTarget, vk::ImageAspectFlags aspect, u32 layerIndex) { void ClearDepthStencilRt(TextureView *renderTarget, vk::ImageAspectFlags aspect, u32 layerIndex) {
std::lock_guard lock(*renderTarget); std::scoped_lock lock{*renderTarget};
executor.AttachTexture(renderTarget); executor.AttachTexture(renderTarget);
if (renderTarget->range.layerCount == 1 && layerIndex == 0) { if (renderTarget->range.layerCount == 1 && layerIndex == 0) {

View File

@ -172,7 +172,7 @@ namespace skyline::gpu {
} }
void PresentationEngine::UpdateSurface(jobject newSurface) { void PresentationEngine::UpdateSurface(jobject newSurface) {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
auto env{state.jvm->GetEnv()}; auto env{state.jvm->GetEnv()};
if (!env->IsSameObject(jSurface, nullptr)) { if (!env->IsSameObject(jSurface, nullptr)) {
@ -295,7 +295,7 @@ namespace skyline::gpu {
throw exception("Retrieving the next frame's ID failed with {}", result); throw exception("Retrieving the next frame's ID failed with {}", result);
{ {
std::lock_guard queueLock(gpu.queueMutex); std::scoped_lock queueLock{gpu.queueMutex};
std::ignore = gpu.vkQueue.presentKHR(vk::PresentInfoKHR{ std::ignore = gpu.vkQueue.presentKHR(vk::PresentInfoKHR{
.swapchainCount = 1, .swapchainCount = 1,
.pSwapchains = &**vkSwapchain, .pSwapchains = &**vkSwapchain,

View File

@ -106,11 +106,11 @@ namespace skyline::gpu {
} }
trapHandle = gpu.state.nce->TrapRegions(mappings, true, [this] { trapHandle = gpu.state.nce->TrapRegions(mappings, true, [this] {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
SynchronizeGuest(true); // We can skip trapping since the caller will do it SynchronizeGuest(true); // We can skip trapping since the caller will do it
WaitOnFence(); WaitOnFence();
}, [this] { }, [this] {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
SynchronizeGuest(true); SynchronizeGuest(true);
dirtyState = DirtyState::CpuDirty; // We need to assume the texture is dirty since we don't know what the guest is writing dirtyState = DirtyState::CpuDirty; // We need to assume the texture is dirty since we don't know what the guest is writing
WaitOnFence(); WaitOnFence();
@ -339,7 +339,7 @@ namespace skyline::gpu {
} }
Texture::~Texture() { Texture::~Texture() {
std::lock_guard lock(*this); std::scoped_lock lock{*this};
if (trapHandle) if (trapHandle)
gpu.state.nce->DeleteTrap(*trapHandle); gpu.state.nce->DeleteTrap(*trapHandle);
SynchronizeGuest(true); SynchronizeGuest(true);

View File

@ -14,7 +14,7 @@ namespace skyline::input {
} { Activate(); /* NPads are activated by default, certain homebrew is reliant on this behavior */ } } { Activate(); /* NPads are activated by default, certain homebrew is reliant on this behavior */ }
void NpadManager::Update() { void NpadManager::Update() {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
if (!activated) if (!activated)
return; return;
@ -75,7 +75,7 @@ namespace skyline::input {
} }
void NpadManager::Activate() { void NpadManager::Activate() {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
if (!activated) { if (!activated) {
supportedIds = {NpadId::Handheld, NpadId::Player1, NpadId::Player2, NpadId::Player3, NpadId::Player4, NpadId::Player5, NpadId::Player6, NpadId::Player7, NpadId::Player8}; supportedIds = {NpadId::Handheld, NpadId::Player1, NpadId::Player2, NpadId::Player3, NpadId::Player4, NpadId::Player5, NpadId::Player6, NpadId::Player7, NpadId::Player8};
styles = {.proController = true, .joyconHandheld = true, .joyconDual = true, .joyconLeft = true, .joyconRight = true}; styles = {.proController = true, .joyconHandheld = true, .joyconDual = true, .joyconLeft = true, .joyconRight = true};
@ -86,7 +86,7 @@ namespace skyline::input {
} }
void NpadManager::Deactivate() { void NpadManager::Deactivate() {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
if (activated) { if (activated) {
supportedIds = {}; supportedIds = {};
styles = {}; styles = {};

View File

@ -40,7 +40,7 @@ namespace skyline::kernel {
u64 timeslice{}; u64 timeslice{};
if (!candidateCore.queue.empty()) { if (!candidateCore.queue.empty()) {
std::lock_guard coreLock(candidateCore.mutex); std::scoped_lock coreLock{candidateCore.mutex};
auto threadIterator{candidateCore.queue.cbegin()}; auto threadIterator{candidateCore.queue.cbegin()};
if (threadIterator != candidateCore.queue.cend()) { if (threadIterator != candidateCore.queue.cend()) {
@ -155,7 +155,7 @@ namespace skyline::kernel {
auto wakeFunction{[&]() { auto wakeFunction{[&]() {
if (!thread->affinityMask.test(thread->coreId)) [[unlikely]] { if (!thread->affinityMask.test(thread->coreId)) [[unlikely]] {
lock.unlock(); // If the core migration mutex is locked by a thread seeking the core mutex, it'll result in a deadlock lock.unlock(); // If the core migration mutex is locked by a thread seeking the core mutex, it'll result in a deadlock
std::lock_guard migrationLock(thread->coreMigrationMutex); std::scoped_lock migrationLock{thread->coreMigrationMutex};
lock.lock(); lock.lock();
if (!thread->affinityMask.test(thread->coreId)) // We need to retest in case the thread was migrated while the core was unlocked if (!thread->affinityMask.test(thread->coreId)) // We need to retest in case the thread was migrated while the core was unlocked
MigrateToCore(thread, core, &cores.at(thread->idealCore), lock); MigrateToCore(thread, core, &cores.at(thread->idealCore), lock);
@ -168,7 +168,7 @@ namespace skyline::kernel {
std::chrono::milliseconds loadBalanceThreshold{PreemptiveTimeslice * 2}; //!< The amount of time that needs to pass unscheduled for a thread to attempt load balancing std::chrono::milliseconds loadBalanceThreshold{PreemptiveTimeslice * 2}; //!< The amount of time that needs to pass unscheduled for a thread to attempt load balancing
while (!thread->scheduleCondition.wait_for(lock, loadBalanceThreshold, wakeFunction)) { while (!thread->scheduleCondition.wait_for(lock, loadBalanceThreshold, wakeFunction)) {
lock.unlock(); // We cannot call GetOptimalCoreForThread without relinquishing the core mutex lock.unlock(); // We cannot call GetOptimalCoreForThread without relinquishing the core mutex
std::lock_guard migrationLock(thread->coreMigrationMutex); std::scoped_lock migrationLock{thread->coreMigrationMutex};
auto newCore{&GetOptimalCoreForThread(state.thread)}; auto newCore{&GetOptimalCoreForThread(state.thread)};
lock.lock(); lock.lock();
if (core != newCore) if (core != newCore)
@ -195,7 +195,7 @@ namespace skyline::kernel {
std::unique_lock lock(core->mutex); std::unique_lock lock(core->mutex);
if (thread->scheduleCondition.wait_for(lock, timeout, [&]() { if (thread->scheduleCondition.wait_for(lock, timeout, [&]() {
if (!thread->affinityMask.test(thread->coreId)) [[unlikely]] { if (!thread->affinityMask.test(thread->coreId)) [[unlikely]] {
std::lock_guard migrationLock(thread->coreMigrationMutex); std::scoped_lock migrationLock{thread->coreMigrationMutex};
MigrateToCore(thread, core, &cores.at(thread->idealCore), lock); MigrateToCore(thread, core, &cores.at(thread->idealCore), lock);
} }
return !core->queue.empty() && core->queue.front() == thread; return !core->queue.empty() && core->queue.front() == thread;
@ -263,7 +263,7 @@ namespace skyline::kernel {
} }
void Scheduler::UpdatePriority(const std::shared_ptr<type::KThread> &thread) { void Scheduler::UpdatePriority(const std::shared_ptr<type::KThread> &thread) {
std::lock_guard migrationLock(thread->coreMigrationMutex); std::scoped_lock migrationLock{thread->coreMigrationMutex};
auto *core{&cores.at(thread->coreId)}; auto *core{&cores.at(thread->coreId)};
std::unique_lock coreLock(core->mutex); std::unique_lock coreLock(core->mutex);
@ -304,7 +304,7 @@ namespace skyline::kernel {
void Scheduler::UpdateCore(const std::shared_ptr<type::KThread> &thread) { void Scheduler::UpdateCore(const std::shared_ptr<type::KThread> &thread) {
auto *core{&cores.at(thread->coreId)}; auto *core{&cores.at(thread->coreId)};
std::lock_guard coreLock(core->mutex); std::scoped_lock coreLock{core->mutex};
if (core->queue.front() == thread) if (core->queue.front() == thread)
thread->SendSignal(YieldSignal); thread->SendSignal(YieldSignal);
else else
@ -313,7 +313,7 @@ namespace skyline::kernel {
void Scheduler::ParkThread() { void Scheduler::ParkThread() {
auto &thread{state.thread}; auto &thread{state.thread};
std::lock_guard migrationLock(thread->coreMigrationMutex); std::scoped_lock migrationLock{thread->coreMigrationMutex};
RemoveThread(); RemoveThread();
auto originalCoreId{thread->coreId}; auto originalCoreId{thread->coreId};

View File

@ -424,7 +424,7 @@ namespace skyline::kernel::svc {
Logger::Debug("Setting thread #{}'s Ideal Core ({}) + Affinity Mask ({})", thread->id, idealCore, affinityMask); Logger::Debug("Setting thread #{}'s Ideal Core ({}) + Affinity Mask ({})", thread->id, idealCore, affinityMask);
std::lock_guard guard(thread->coreMigrationMutex); std::scoped_lock guard{thread->coreMigrationMutex};
thread->idealCore = static_cast<u8>(idealCore); thread->idealCore = static_cast<u8>(idealCore);
thread->affinityMask = affinityMask; thread->affinityMask = affinityMask;
@ -451,7 +451,7 @@ namespace skyline::kernel::svc {
} }
void GetCurrentProcessorNumber(const DeviceState &state) { void GetCurrentProcessorNumber(const DeviceState &state) {
std::lock_guard guard(state.thread->coreMigrationMutex); std::scoped_lock guard{state.thread->coreMigrationMutex};
u8 coreId{state.thread->coreId}; u8 coreId{state.thread->coreId};
Logger::Debug("C{}", coreId); Logger::Debug("C{}", coreId);
state.ctx->gpr.w0 = coreId; state.ctx->gpr.w0 = coreId;

View File

@ -19,7 +19,7 @@ namespace skyline::kernel::type {
KProcess::KProcess(const DeviceState &state) : memory(state), KSyncObject(state, KType::KProcess) {} KProcess::KProcess(const DeviceState &state) : memory(state), KSyncObject(state, KType::KProcess) {}
KProcess::~KProcess() { KProcess::~KProcess() {
std::lock_guard guard(threadMutex); std::scoped_lock guard{threadMutex};
disableThreadCreation = true; disableThreadCreation = true;
for (const auto &thread : threads) for (const auto &thread : threads)
thread->Kill(true); thread->Kill(true);
@ -33,7 +33,7 @@ namespace skyline::kernel::type {
else else
alreadyKilled.store(true); alreadyKilled.store(true);
std::lock_guard guard(threadMutex); std::scoped_lock guard{threadMutex};
if (disableCreation) if (disableCreation)
disableThreadCreation = true; disableThreadCreation = true;
if (all) { if (all) {
@ -52,7 +52,7 @@ namespace skyline::kernel::type {
} }
u8 *KProcess::AllocateTlsSlot() { u8 *KProcess::AllocateTlsSlot() {
std::lock_guard lock(tlsMutex); std::scoped_lock lock{tlsMutex};
u8 *slot; u8 *slot;
for (auto &tlsPage: tlsPages) for (auto &tlsPage: tlsPages)
if ((slot = tlsPage->ReserveSlot())) if ((slot = tlsPage->ReserveSlot()))
@ -65,7 +65,7 @@ namespace skyline::kernel::type {
} }
std::shared_ptr<KThread> KProcess::CreateThread(void *entry, u64 argument, void *stackTop, std::optional<i8> priority, std::optional<u8> idealCore) { std::shared_ptr<KThread> KProcess::CreateThread(void *entry, u64 argument, void *stackTop, std::optional<i8> priority, std::optional<u8> idealCore) {
std::lock_guard guard(threadMutex); std::scoped_lock guard{threadMutex};
if (disableThreadCreation) if (disableThreadCreation)
return nullptr; return nullptr;
if (!stackTop && threads.empty()) { //!< Main thread stack is created by the kernel and owned by the process if (!stackTop && threads.empty()) { //!< Main thread stack is created by the kernel and owned by the process
@ -122,7 +122,7 @@ namespace skyline::kernel::type {
bool isHighestPriority; bool isHighestPriority;
{ {
std::lock_guard lock(owner->waiterMutex); std::scoped_lock lock{owner->waiterMutex};
u32 value{}; u32 value{};
if (__atomic_compare_exchange_n(mutex, &value, tag, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) if (__atomic_compare_exchange_n(mutex, &value, tag, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST))
@ -153,12 +153,12 @@ namespace skyline::kernel::type {
void KProcess::MutexUnlock(u32 *mutex) { void KProcess::MutexUnlock(u32 *mutex) {
TRACE_EVENT_FMT("kernel", "MutexUnlock 0x{:X}", mutex); TRACE_EVENT_FMT("kernel", "MutexUnlock 0x{:X}", mutex);
std::lock_guard lock(state.thread->waiterMutex); std::scoped_lock lock{state.thread->waiterMutex};
auto &waiters{state.thread->waiters}; auto &waiters{state.thread->waiters};
auto nextOwnerIt{std::find_if(waiters.begin(), waiters.end(), [mutex](const std::shared_ptr<KThread> &thread) { return thread->waitKey == mutex; })}; auto nextOwnerIt{std::find_if(waiters.begin(), waiters.end(), [mutex](const std::shared_ptr<KThread> &thread) { return thread->waitKey == mutex; })};
if (nextOwnerIt != waiters.end()) { if (nextOwnerIt != waiters.end()) {
auto nextOwner{*nextOwnerIt}; auto nextOwner{*nextOwnerIt};
std::lock_guard nextLock(nextOwner->waiterMutex); std::scoped_lock nextLock{nextOwner->waiterMutex};
nextOwner->waitThread = std::shared_ptr<KThread>{nullptr}; nextOwner->waitThread = std::shared_ptr<KThread>{nullptr};
nextOwner->waitKey = nullptr; nextOwner->waitKey = nullptr;
@ -217,7 +217,7 @@ namespace skyline::kernel::type {
TRACE_EVENT_FMT("kernel", "ConditionalVariableWait 0x{:X} (0x{:X})", key, mutex); TRACE_EVENT_FMT("kernel", "ConditionalVariableWait 0x{:X} (0x{:X})", key, mutex);
{ {
std::lock_guard lock(syncWaiterMutex); std::scoped_lock lock{syncWaiterMutex};
auto queue{syncWaiters.equal_range(key)}; auto queue{syncWaiters.equal_range(key)};
syncWaiters.insert(std::upper_bound(queue.first, queue.second, state.thread->priority.load(), [](const i8 priority, const SyncWaiters::value_type &it) { return it.second->priority > priority; }), {key, state.thread}); syncWaiters.insert(std::upper_bound(queue.first, queue.second, state.thread->priority.load(), [](const i8 priority, const SyncWaiters::value_type &it) { return it.second->priority > priority; }), {key, state.thread});
@ -257,7 +257,7 @@ namespace skyline::kernel::type {
void KProcess::ConditionalVariableSignal(u32 *key, i32 amount) { void KProcess::ConditionalVariableSignal(u32 *key, i32 amount) {
TRACE_EVENT_FMT("kernel", "ConditionalVariableSignal 0x{:X}", key); TRACE_EVENT_FMT("kernel", "ConditionalVariableSignal 0x{:X}", key);
std::lock_guard lock(syncWaiterMutex); std::scoped_lock lock{syncWaiterMutex};
auto queue{syncWaiters.equal_range(key)}; auto queue{syncWaiters.equal_range(key)};
auto it{queue.first}; auto it{queue.first};
@ -272,7 +272,7 @@ namespace skyline::kernel::type {
TRACE_EVENT_FMT("kernel", "WaitForAddress 0x{:X}", address); TRACE_EVENT_FMT("kernel", "WaitForAddress 0x{:X}", address);
{ {
std::lock_guard lock(syncWaiterMutex); std::scoped_lock lock{syncWaiterMutex};
if (!arbitrationFunction(address, value)) [[unlikely]] if (!arbitrationFunction(address, value)) [[unlikely]]
return result::InvalidState; return result::InvalidState;
@ -284,7 +284,7 @@ namespace skyline::kernel::type {
if (timeout > 0 && !state.scheduler->TimedWaitSchedule(std::chrono::nanoseconds(timeout))) { if (timeout > 0 && !state.scheduler->TimedWaitSchedule(std::chrono::nanoseconds(timeout))) {
{ {
std::lock_guard lock(syncWaiterMutex); std::scoped_lock lock{syncWaiterMutex};
auto queue{syncWaiters.equal_range(address)}; auto queue{syncWaiters.equal_range(address)};
auto iterator{std::find(queue.first, queue.second, SyncWaiters::value_type{address, state.thread})}; auto iterator{std::find(queue.first, queue.second, SyncWaiters::value_type{address, state.thread})};
if (iterator != queue.second) if (iterator != queue.second)
@ -306,7 +306,7 @@ namespace skyline::kernel::type {
Result KProcess::SignalToAddress(u32 *address, u32 value, i32 amount, bool(*mutateFunction)(u32 *address, u32 value, u32 waiterCount)) { Result KProcess::SignalToAddress(u32 *address, u32 value, i32 amount, bool(*mutateFunction)(u32 *address, u32 value, u32 waiterCount)) {
TRACE_EVENT_FMT("kernel", "SignalToAddress 0x{:X}", address); TRACE_EVENT_FMT("kernel", "SignalToAddress 0x{:X}", address);
std::lock_guard lock(syncWaiterMutex); std::scoped_lock lock{syncWaiterMutex};
auto queue{syncWaiters.equal_range(address)}; auto queue{syncWaiters.equal_range(address)};
if (mutateFunction) if (mutateFunction)

View File

@ -6,7 +6,7 @@
namespace skyline::kernel::type { namespace skyline::kernel::type {
void KSyncObject::Signal() { void KSyncObject::Signal() {
std::lock_guard lock(syncObjectMutex); std::scoped_lock lock{syncObjectMutex};
signalled = true; signalled = true;
for (auto &waiter : syncObjectWaiters) { for (auto &waiter : syncObjectWaiters) {
if (waiter->isCancellable) { if (waiter->isCancellable) {
@ -18,7 +18,7 @@ namespace skyline::kernel::type {
} }
bool KSyncObject::ResetSignal() { bool KSyncObject::ResetSignal() {
std::lock_guard lock(syncObjectMutex); std::scoped_lock lock{syncObjectMutex};
if (signalled) [[likely]] { if (signalled) [[likely]] {
signalled = false; signalled = false;
return true; return true;

View File

@ -51,7 +51,7 @@ namespace skyline::kernel::type {
state.scheduler->RemoveThread(); state.scheduler->RemoveThread();
{ {
std::lock_guard lock(statusMutex); std::scoped_lock lock{statusMutex};
running = false; running = false;
ready = false; ready = false;
statusCondition.notify_all(); statusCondition.notify_all();
@ -79,7 +79,7 @@ namespace skyline::kernel::type {
signal::SetSignalHandler({Scheduler::YieldSignal, Scheduler::PreemptionSignal}, Scheduler::SignalHandler, false); // We want futexes to fail and their predicates rechecked signal::SetSignalHandler({Scheduler::YieldSignal, Scheduler::PreemptionSignal}, Scheduler::SignalHandler, false); // We want futexes to fail and their predicates rechecked
{ {
std::lock_guard lock(statusMutex); std::scoped_lock lock{statusMutex};
ready = true; ready = true;
statusCondition.notify_all(); statusCondition.notify_all();
} }
@ -202,7 +202,7 @@ namespace skyline::kernel::type {
std::unique_lock lock(statusMutex); std::unique_lock lock(statusMutex);
if (!running) { if (!running) {
{ {
std::lock_guard migrationLock(coreMigrationMutex); std::scoped_lock migrationLock{coreMigrationMutex};
auto thisShared{shared_from_this()}; auto thisShared{shared_from_this()};
coreId = state.scheduler->GetOptimalCoreForThread(thisShared).id; coreId = state.scheduler->GetOptimalCoreForThread(thisShared).id;
state.scheduler->InsertThread(thisShared); state.scheduler->InsertThread(thisShared);
@ -283,11 +283,11 @@ namespace skyline::kernel::type {
} while (waitingOn->priority.compare_exchange_strong(ownerPriority, currentPriority)); } while (waitingOn->priority.compare_exchange_strong(ownerPriority, currentPriority));
if (ownerPriority != currentPriority) { if (ownerPriority != currentPriority) {
std::lock_guard waiterLock(waitingOn->waiterMutex); std::scoped_lock waiterLock{waitingOn->waiterMutex};
auto nextThread{waitingOn->waitThread}; auto nextThread{waitingOn->waitThread};
if (nextThread) { if (nextThread) {
// We need to update the location of the owner thread in the waiter queue of the thread it's waiting on // We need to update the location of the owner thread in the waiter queue of the thread it's waiting on
std::lock_guard nextWaiterLock(nextThread->waiterMutex); std::scoped_lock nextWaiterLock{nextThread->waiterMutex};
auto &piWaiters{nextThread->waiters}; auto &piWaiters{nextThread->waiters};
piWaiters.erase(std::find(piWaiters.begin(), piWaiters.end(), waitingOn)); piWaiters.erase(std::find(piWaiters.begin(), piWaiters.end(), waitingOn));
piWaiters.insert(std::upper_bound(piWaiters.begin(), piWaiters.end(), currentPriority, KThread::IsHigherPriority), waitingOn); piWaiters.insert(std::upper_bound(piWaiters.begin(), piWaiters.end(), currentPriority, KThread::IsHigherPriority), waitingOn);

View File

@ -31,7 +31,7 @@ namespace skyline::service::hid {
Result IHidServer::SetSupportedNpadStyleSet(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetSupportedNpadStyleSet(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto styleSet{request.Pop<NpadStyleSet>()}; auto styleSet{request.Pop<NpadStyleSet>()};
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
state.input->npad.styles = styleSet; state.input->npad.styles = styleSet;
state.input->npad.Update(); state.input->npad.Update();
@ -47,7 +47,7 @@ namespace skyline::service::hid {
Result IHidServer::SetSupportedNpadIdType(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetSupportedNpadIdType(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto supportedIds{request.inputBuf.at(0).cast<NpadId>()}; auto supportedIds{request.inputBuf.at(0).cast<NpadId>()};
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
state.input->npad.supportedIds.assign(supportedIds.begin(), supportedIds.end()); state.input->npad.supportedIds.assign(supportedIds.begin(), supportedIds.end());
state.input->npad.Update(); state.input->npad.Update();
return {}; return {};
@ -105,7 +105,7 @@ namespace skyline::service::hid {
} }
Result IHidServer::SetNpadJoyHoldType(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetNpadJoyHoldType(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
request.Skip<u64>(); request.Skip<u64>();
state.input->npad.orientation = request.Pop<NpadJoyOrientation>(); state.input->npad.orientation = request.Pop<NpadJoyOrientation>();
state.input->npad.Update(); state.input->npad.Update();
@ -119,7 +119,7 @@ namespace skyline::service::hid {
Result IHidServer::SetNpadJoyAssignmentModeSingleByDefault(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetNpadJoyAssignmentModeSingleByDefault(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto id{request.Pop<NpadId>()}; auto id{request.Pop<NpadId>()};
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Single); state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Single);
state.input->npad.Update(); state.input->npad.Update();
return {}; return {};
@ -127,7 +127,7 @@ namespace skyline::service::hid {
Result IHidServer::SetNpadJoyAssignmentModeSingle(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetNpadJoyAssignmentModeSingle(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto id{request.Pop<NpadId>()}; auto id{request.Pop<NpadId>()};
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Single); state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Single);
state.input->npad.Update(); state.input->npad.Update();
return {}; return {};
@ -135,7 +135,7 @@ namespace skyline::service::hid {
Result IHidServer::SetNpadJoyAssignmentModeDual(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IHidServer::SetNpadJoyAssignmentModeDual(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto id{request.Pop<NpadId>()}; auto id{request.Pop<NpadId>()};
std::lock_guard lock(state.input->npad.mutex); std::scoped_lock lock{state.input->npad.mutex};
state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Dual); state.input->npad.at(id).SetAssignment(NpadJoyAssignment::Dual);
state.input->npad.Update(); state.input->npad.Update();
return {}; return {};

View File

@ -25,7 +25,7 @@ namespace skyline::service::mmnv {
request.Skip<u32>(); // Unknown unused param in HOS request.Skip<u32>(); // Unknown unused param in HOS
//u32 autoClear{request.Pop<u32>()}; //u32 autoClear{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
AllocateRequest().request.module = module; AllocateRequest().request.module = module;
return {}; return {};
@ -34,7 +34,7 @@ namespace skyline::service::mmnv {
Result IRequest::FinalizeOld(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IRequest::FinalizeOld(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto module{request.Pop<ModuleType>()}; auto module{request.Pop<ModuleType>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
for (auto &req : requests) { for (auto &req : requests) {
if (req && req->module == module) { if (req && req->module == module) {
req.reset(); req.reset();
@ -49,7 +49,7 @@ namespace skyline::service::mmnv {
auto module{request.Pop<ModuleType>()}; auto module{request.Pop<ModuleType>()};
u32 freqHz{request.Pop<u32>()}; u32 freqHz{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
for (auto &req : requests) { for (auto &req : requests) {
if (req && req->module == module) { if (req && req->module == module) {
req->freqHz = freqHz; req->freqHz = freqHz;
@ -67,7 +67,7 @@ namespace skyline::service::mmnv {
Result IRequest::GetOld(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IRequest::GetOld(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
auto module{request.Pop<ModuleType>()}; auto module{request.Pop<ModuleType>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
for (auto &req : requests) { for (auto &req : requests) {
if (req && req->module == module) { if (req && req->module == module) {
Logger::Debug("Get frequency for module {}: {} Hz", static_cast<u32>(module), req->freqHz); Logger::Debug("Get frequency for module {}: {} Hz", static_cast<u32>(module), req->freqHz);
@ -87,7 +87,7 @@ namespace skyline::service::mmnv {
request.Skip<u32>(); // Unknown unused param in HOS request.Skip<u32>(); // Unknown unused param in HOS
//u32 autoClear{request.Pop<u32>()}; //u32 autoClear{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
auto req{AllocateRequest()}; auto req{AllocateRequest()};
req.request.module = module; req.request.module = module;
response.Push<u32>(req.id); response.Push<u32>(req.id);
@ -97,7 +97,7 @@ namespace skyline::service::mmnv {
Result IRequest::Finalize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IRequest::Finalize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
u32 id{request.Pop<u32>()}; u32 id{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
if (id >= requests.size()) if (id >= requests.size())
return {}; return {};
@ -109,7 +109,7 @@ namespace skyline::service::mmnv {
u32 id{request.Pop<u32>()}; u32 id{request.Pop<u32>()};
u32 freqHz{request.Pop<u32>()}; u32 freqHz{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
if (id < requests.size()) { if (id < requests.size()) {
auto &req{requests[id]}; auto &req{requests[id]};
if (req) { if (req) {
@ -127,7 +127,7 @@ namespace skyline::service::mmnv {
Result IRequest::Get(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) { Result IRequest::Get(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
u32 id{request.Pop<u32>()}; u32 id{request.Pop<u32>()};
std::lock_guard lock(requestsMutex); std::scoped_lock lock{requestsMutex};
if (id < requests.size()) { if (id < requests.size()) {
auto &req{requests[id]}; auto &req{requests[id]};
if (req) { if (req) {

View File

@ -40,7 +40,7 @@ namespace skyline::service::nvdrv::core {
} }
u32 SyncpointManager::AllocateSyncpoint(bool clientManaged) { u32 SyncpointManager::AllocateSyncpoint(bool clientManaged) {
std::lock_guard lock(reservationLock); std::scoped_lock lock{reservationLock};
return ReserveSyncpoint(FindFreeSyncpoint(), clientManaged); return ReserveSyncpoint(FindFreeSyncpoint(), clientManaged);
} }

View File

@ -102,7 +102,7 @@ namespace skyline::service::nvdrv::device::nvhost {
if (!timeout) if (!timeout)
return PosixResult::TryAgain; return PosixResult::TryAgain;
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
u32 slot = [&]() { u32 slot = [&]() {
if (allocate) { if (allocate) {
@ -165,7 +165,7 @@ namespace skyline::service::nvdrv::device::nvhost {
if (slot >= SyncpointEventCount) if (slot >= SyncpointEventCount)
return PosixResult::InvalidArgument; return PosixResult::InvalidArgument;
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
auto &event{syncpointEvents[slot]}; auto &event{syncpointEvents[slot]};
if (!event) if (!event)
@ -197,7 +197,7 @@ namespace skyline::service::nvdrv::device::nvhost {
if (slot >= SyncpointEventCount) if (slot >= SyncpointEventCount)
return PosixResult::InvalidArgument; return PosixResult::InvalidArgument;
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
auto &event{syncpointEvents[slot]}; auto &event{syncpointEvents[slot]};
if (event) // Recreate event if it already exists if (event) // Recreate event if it already exists
@ -212,7 +212,7 @@ namespace skyline::service::nvdrv::device::nvhost {
PosixResult Ctrl::SyncpointFreeEvent(In<u32> slot) { PosixResult Ctrl::SyncpointFreeEvent(In<u32> slot) {
Logger::Debug("slot: {}", slot); Logger::Debug("slot: {}", slot);
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
return SyncpointFreeEventLocked(slot); return SyncpointFreeEventLocked(slot);
} }
@ -222,7 +222,7 @@ namespace skyline::service::nvdrv::device::nvhost {
auto err{PosixResult::Success}; auto err{PosixResult::Success};
// Avoid repeated locks/unlocks by just locking now // Avoid repeated locks/unlocks by just locking now
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
for (u32 i{}; i < std::numeric_limits<u64>::digits; i++) for (u32 i{}; i < std::numeric_limits<u64>::digits; i++)
if (bitmask & (1ULL << i)) if (bitmask & (1ULL << i))
@ -242,7 +242,7 @@ namespace skyline::service::nvdrv::device::nvhost {
u32 syncpointId{value.eventAllocated ? static_cast<u32>(value.syncpointIdForAllocation) : value.syncpointId}; u32 syncpointId{value.eventAllocated ? static_cast<u32>(value.syncpointIdForAllocation) : value.syncpointId};
std::lock_guard lock(syncpointEventMutex); std::scoped_lock lock{syncpointEventMutex};
auto &event{syncpointEvents[slot]}; auto &event{syncpointEvents[slot]};
if (event && event->fence.id == syncpointId) if (event && event->fence.id == syncpointId)

View File

@ -116,7 +116,7 @@ namespace skyline::service {
} }
std::shared_ptr<BaseService> ServiceManager::NewService(ServiceName name, type::KSession &session, ipc::IpcResponse &response) { std::shared_ptr<BaseService> ServiceManager::NewService(ServiceName name, type::KSession &session, ipc::IpcResponse &response) {
std::lock_guard serviceGuard(mutex); std::scoped_lock serviceGuard{mutex};
auto serviceObject{CreateOrGetService(name)}; auto serviceObject{CreateOrGetService(name)};
KHandle handle{}; KHandle handle{};
if (session.isDomain) { if (session.isDomain) {
@ -132,7 +132,7 @@ namespace skyline::service {
} }
void ServiceManager::RegisterService(std::shared_ptr<BaseService> serviceObject, type::KSession &session, ipc::IpcResponse &response) { // NOLINT(performance-unnecessary-value-param) void ServiceManager::RegisterService(std::shared_ptr<BaseService> serviceObject, type::KSession &session, ipc::IpcResponse &response) { // NOLINT(performance-unnecessary-value-param)
std::lock_guard serviceGuard(mutex); std::scoped_lock serviceGuard{mutex};
KHandle handle{}; KHandle handle{};
if (session.isDomain) { if (session.isDomain) {
@ -148,7 +148,7 @@ namespace skyline::service {
} }
void ServiceManager::CloseSession(KHandle handle) { void ServiceManager::CloseSession(KHandle handle) {
std::lock_guard serviceGuard(mutex); std::scoped_lock serviceGuard{mutex};
auto session{state.process->GetHandle<type::KSession>(handle)}; auto session{state.process->GetHandle<type::KSession>(handle)};
if (session->isOpen) { if (session->isOpen) {
if (session->isDomain) { if (session->isDomain) {

View File

@ -51,7 +51,7 @@ namespace skyline::service::timesrv::core {
} }
TimeSpanType StandardSteadyClockCore::GetRawTimePoint() { TimeSpanType StandardSteadyClockCore::GetRawTimePoint() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
auto timePoint{TimeSpanType::FromNanoseconds(util::GetTimeNs()) + rtcOffset}; auto timePoint{TimeSpanType::FromNanoseconds(util::GetTimeNs()) + rtcOffset};
if (timePoint > cachedValue) if (timePoint > cachedValue)

View File

@ -99,14 +99,14 @@ namespace skyline::service::timesrv::core {
} }
void SystemClockContextUpdateCallback::SignalOperationEvent() { void SystemClockContextUpdateCallback::SignalOperationEvent() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
for (const auto &event : operationEvents) for (const auto &event : operationEvents)
event->Signal(); event->Signal();
} }
void SystemClockContextUpdateCallback::AddOperationEvent(const std::shared_ptr<kernel::type::KEvent> &event) { void SystemClockContextUpdateCallback::AddOperationEvent(const std::shared_ptr<kernel::type::KEvent> &event) {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
operationEvents.push_back(event); operationEvents.push_back(event);
} }

View File

@ -16,7 +16,7 @@ namespace skyline::service::timesrv::core {
} }
ResultValue<LocationName> TimeZoneManager::GetLocationName() { ResultValue<LocationName> TimeZoneManager::GetLocationName() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
if (!IsInitialized()) if (!IsInitialized())
return result::ClockUninitialized; return result::ClockUninitialized;
@ -25,7 +25,7 @@ namespace skyline::service::timesrv::core {
} }
Result TimeZoneManager::SetNewLocation(std::string_view pLocationName, span<u8> binary) { Result TimeZoneManager::SetNewLocation(std::string_view pLocationName, span<u8> binary) {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
rule = tz_tzalloc(binary.data(), static_cast<long>(binary.size())); rule = tz_tzalloc(binary.data(), static_cast<long>(binary.size()));
if (!rule) if (!rule)
@ -37,7 +37,7 @@ namespace skyline::service::timesrv::core {
} }
ResultValue<SteadyClockTimePoint> TimeZoneManager::GetUpdateTime() { ResultValue<SteadyClockTimePoint> TimeZoneManager::GetUpdateTime() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
if (!IsInitialized()) if (!IsInitialized())
return result::ClockUninitialized; return result::ClockUninitialized;
@ -46,12 +46,12 @@ namespace skyline::service::timesrv::core {
} }
void TimeZoneManager::SetUpdateTime(const SteadyClockTimePoint &pUpdateTime) { void TimeZoneManager::SetUpdateTime(const SteadyClockTimePoint &pUpdateTime) {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
updateTime = pUpdateTime; updateTime = pUpdateTime;
} }
ResultValue<int> TimeZoneManager::GetLocationCount() { ResultValue<int> TimeZoneManager::GetLocationCount() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
if (!IsInitialized()) if (!IsInitialized())
return result::ClockUninitialized; return result::ClockUninitialized;
@ -60,12 +60,12 @@ namespace skyline::service::timesrv::core {
} }
void TimeZoneManager::SetLocationCount(int pLocationCount) { void TimeZoneManager::SetLocationCount(int pLocationCount) {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
locationCount = pLocationCount; locationCount = pLocationCount;
} }
ResultValue<std::array<u8, 0x10>> TimeZoneManager::GetBinaryVersion() { ResultValue<std::array<u8, 0x10>> TimeZoneManager::GetBinaryVersion() {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
if (!IsInitialized()) if (!IsInitialized())
return result::ClockUninitialized; return result::ClockUninitialized;
@ -74,7 +74,7 @@ namespace skyline::service::timesrv::core {
} }
void TimeZoneManager::SetBinaryVersion(std::array<u8, 0x10> pBinaryVersion) { void TimeZoneManager::SetBinaryVersion(std::array<u8, 0x10> pBinaryVersion) {
std::lock_guard lock(mutex); std::scoped_lock lock{mutex};
binaryVersion = pBinaryVersion; binaryVersion = pBinaryVersion;
} }

View File

@ -29,7 +29,7 @@ namespace skyline::vfs {
if (read != size) if (read != size)
return 0; return 0;
{ {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
UpdateCtr(baseOffset + offset); UpdateCtr(baseOffset + offset);
cipher.Decrypt(output); cipher.Decrypt(output);
} }
@ -42,7 +42,7 @@ namespace skyline::vfs {
if (read != SectorSize) if (read != SectorSize)
return 0; return 0;
{ {
std::lock_guard guard(mutex); std::scoped_lock guard{mutex};
UpdateCtr(baseOffset + sectorStart); UpdateCtr(baseOffset + sectorStart);
cipher.Decrypt(blockBuf); cipher.Decrypt(blockBuf);
} }