summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache')
-rw-r--r--src/cache/handle.c5
-rw-r--r--src/cache/handle.h1
-rw-r--r--src/cache/threaded_waits.c7
-rw-r--r--src/cache/threaded_waits.h1
4 files changed, 14 insertions, 0 deletions
diff --git a/src/cache/handle.c b/src/cache/handle.c
index 206738e..dddf172 100644
--- a/src/cache/handle.c
+++ b/src/cache/handle.c
@@ -97,3 +97,8 @@ void cch_handle_disable(struct cch_handle *handle)
{
cch_threaded_wait_disable(&handle->wait);
}
+
+void cch_handle_enable(struct cch_handle *handle)
+{
+ cch_threaded_wait_enable(&handle->wait);
+}
diff --git a/src/cache/handle.h b/src/cache/handle.h
index fc84109..007e04d 100644
--- a/src/cache/handle.h
+++ b/src/cache/handle.h
@@ -18,3 +18,4 @@ s32 cch_handle_read(struct cch_handle *handle, u8 *buf, s32 size);
off_t cch_handle_seek(struct cch_handle *handle, off_t offset, s32 whence);
bool cch_handle_can_seek(struct cch_handle *handle);
void cch_handle_disable(struct cch_handle *handle);
+void cch_handle_enable(struct cch_handle *handle);
diff --git a/src/cache/threaded_waits.c b/src/cache/threaded_waits.c
index 3bf67eb..5990783 100644
--- a/src/cache/threaded_waits.c
+++ b/src/cache/threaded_waits.c
@@ -76,6 +76,13 @@ void cch_threaded_wait_disable(struct cch_handler_wait *wait)
nn_mutex_unlock(&wait->mutex);
}
+void cch_threaded_wait_enable(struct cch_handler_wait *wait)
+{
+ nn_mutex_lock(&wait->mutex);
+ wait->disabled = false;
+ nn_mutex_unlock(&wait->mutex);
+}
+
void cch_threaded_waits_disable_all(struct cch_handler *handler)
{
nn_mutex_lock(&handler->mutex);
diff --git a/src/cache/threaded_waits.h b/src/cache/threaded_waits.h
index ee0838d..f8c05a2 100644
--- a/src/cache/threaded_waits.h
+++ b/src/cache/threaded_waits.h
@@ -9,6 +9,7 @@ void cch_threaded_waits_init(struct cch_handler *handler);
bool cch_threaded_wait_for_range(struct cch_handler *handler, struct cch_backing *backing, struct cch_handler_wait *wait);
void cch_threaded_waits_signal_any(struct cch_handler *handler);
void cch_threaded_wait_disable(struct cch_handler_wait *wait);
+void cch_threaded_wait_enable(struct cch_handler_wait *wait);
void cch_threaded_waits_disable_all(struct cch_handler *handler);
void cch_threaded_waits_evaluate(struct cch_handler *handler, struct cch_backing *backing);
void cch_threaded_waits_close(struct cch_handler *handler);