1 /* 2 * Copyright © 2022 Collabora, Ltd. 3 * 4 * SPDX-License-Identifier: MIT 5 */ 6 7 #ifndef MESA_CACHE_DB_MULTIPART_H 8 #define MESA_CACHE_DB_MULTIPART_H 9 10 #include "mesa_cache_db.h" 11 #include "simple_mtx.h" 12 13 struct mesa_cache_db_multipart { 14 struct mesa_cache_db **parts; 15 unsigned int num_parts; 16 volatile unsigned int last_read_part; 17 volatile unsigned int last_written_part; 18 const char *cache_path; 19 uint64_t max_cache_size; 20 simple_mtx_t lock; 21 }; 22 23 bool 24 mesa_cache_db_multipart_open(struct mesa_cache_db_multipart *db, 25 const char *cache_path); 26 27 void 28 mesa_cache_db_multipart_close(struct mesa_cache_db_multipart *db); 29 30 void 31 mesa_cache_db_multipart_set_size_limit(struct mesa_cache_db_multipart *db, 32 uint64_t max_cache_size); 33 34 void * 35 mesa_cache_db_multipart_read_entry(struct mesa_cache_db_multipart *db, 36 const uint8_t *cache_key_160bit, 37 size_t *size); 38 39 bool 40 mesa_cache_db_multipart_entry_write(struct mesa_cache_db_multipart *db, 41 const uint8_t *cache_key_160bit, 42 const void *blob, size_t blob_size); 43 44 void 45 mesa_cache_db_multipart_entry_remove(struct mesa_cache_db_multipart *db, 46 const uint8_t *cache_key_160bit); 47 48 #endif /* MESA_CACHE_DB_MULTIPART_H */ 49