diff options
Diffstat (limited to 'src/cache')
| -rw-r--r-- | src/cache/backings/file_common.c | 3 | ||||
| -rw-r--r-- | src/cache/backings/file_mapped.c | 1 | ||||
| -rw-r--r-- | src/cache/handlers/http.c | 7 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/cache/backings/file_common.c b/src/cache/backings/file_common.c index c0b54c0..232580a 100644 --- a/src/cache/backings/file_common.c +++ b/src/cache/backings/file_common.c @@ -9,7 +9,8 @@ static off_t file_backing_get_size_estimate(struct cch_backing *backing) static bool file_open_internal(struct cch_backing_file *file, str *path, size_t size) { - if (!aki_file_open(&file->file, path, size != 0)) return false; + s32 flags = size != 0 ? AKI_FILE_CREATE : 0; + if (!aki_file_open(&file->file, path, flags)) return false; file->filesize = aki_file_get_filesize(&file->file); if (!size) { file->size = file->filesize; diff --git a/src/cache/backings/file_mapped.c b/src/cache/backings/file_mapped.c index 1b06ad2..4277c21 100644 --- a/src/cache/backings/file_mapped.c +++ b/src/cache/backings/file_mapped.c @@ -43,6 +43,7 @@ static void file_backing_resize(struct cch_backing *backing, size_t size) aki_mutex_lock(&file->mutex); file->size = size; if ((off_t)size > file->filesize) { + // TODO: Unmap, truncate, map? file->u.map = aki_file_mremap(&file->file, size, file->u.map); aki_file_truncate(&file->file, size); file->filesize = size; diff --git a/src/cache/handlers/http.c b/src/cache/handlers/http.c index 1daf231..dd3c8ac 100644 --- a/src/cache/handlers/http.c +++ b/src/cache/handlers/http.c @@ -80,12 +80,11 @@ static size_t http_callback(void *userdata, u8 op, u8 *buf, s64 int0) static void signal_callback(void *userdata) { struct cch_handler_http *http = (struct cch_handler_http *)userdata; + u32 size; + s32 index; do { - u32 size; - camu_queue_size(http->queue, size); + camu_queue_try_pop(http->queue, size, index); if (size == 0) break; - s32 index; - camu_queue_pop(http->queue, index); if (index == -1) { aki_event_loop_break(&http->loop); break; |