summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-12-27 15:24:00 -0500
committerAndrew Opalach <andrew@akon.city> 2024-12-27 15:24:00 -0500
commit20003fd25404ee5fc4cd068fbc4fae1ad6f6ae99 (patch)
tree70078930432a353df7223e18eaad3f617e220c1b /src/cache
parent4af2d16c06a8a67ab225caa61ccd94df3c572bdc (diff)
downloadcamu-20003fd25404ee5fc4cd068fbc4fae1ad6f6ae99.tar.gz
camu-20003fd25404ee5fc4cd068fbc4fae1ad6f6ae99.tar.bz2
camu-20003fd25404ee5fc4cd068fbc4fae1ad6f6ae99.zip
Finish server reuse connection, move loop to list
Signed-off-by: Andrew Opalach <andrew@akon.city>
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);