On 13/03/17 22:55, Grazvydas Ignotas wrote:
On Mon, Mar 13, 2017 at 3:01 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote:
---
src/util/disk_cache.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
index 3b1cffc..160774a 100644
--- a/src/util/disk_cache.c
+++ b/src/util/disk_cache.c
@@ -71,20 +71,40 @@ struct disk_cache {
/* Pointer to total size of all objects in cache (within index_mmap) */
uint64_t *size;
/* Pointer to stored keys, (within index_mmap). */
uint8_t *stored_keys;
/* Maximum size of all cached objects (in bytes). */
uint64_t max_size;
};
+struct disk_cache_put_job {
+ struct util_queue_fence fence;
+
+ struct disk_cache *cache;
+
+ cache_key key;
+
+ /* Cache data to be compressed and written. */
+ const void *data;
+
+ /* Size of data to be compressed and written. */
+ size_t size;
+
+ /* Memory to be freed by util_queue_execute_func cleanup.
+ *
+ * Note: The memory is expected to have been created with ralloc.
+ */
+ void *mem;
+};
+
/* Create a directory named 'path' if it does not already exist.
*
* Returns: 0 if path already exists as a directory or if created.
* -1 in all other cases.
*/
static int
mkdir_if_needed(const char *path)
{
struct stat sb;
@@ -728,20 +748,48 @@ deflate_and_write_to_disk(const void *in_data, size_t
in_data_size, int dest,
} while (flush != Z_FINISH);
/* stream should be complete */
assert(ret == Z_STREAM_END);
/* clean up and return */
(void)deflateEnd(&strm);
return compressed_size;
}
+static struct disk_cache_put_job *
+create_put_job(struct disk_cache *cache, const cache_key key,
+ const void *data, size_t size, void *mem)
+{
+ struct disk_cache_put_job *dc_job = (struct disk_cache_put_job *)
+ malloc(sizeof(struct disk_cache_put_job));
+
+ if (dc_job) {
+ dc_job->cache = cache;
+ memcpy(dc_job->key, key, sizeof(cache_key));
+ dc_job->data = data;
+ dc_job->size = size;
+ dc_job->mem = mem;
+ }
+
+ return dc_job;
+}
+
+static void
+destroy_put_job(void *job, int thread_index)
It looks like thread_index is unused by the series.
Right but that's the interface of u_queue, are you suggesting a change?
I don't think it matters much.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev