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 
12 struct mesa_cache_db_multipart {
13    struct mesa_cache_db *parts;
14    unsigned int num_parts;
15    volatile unsigned int last_read_part;
16    volatile unsigned int last_written_part;
17 };
18 
19 bool
20 mesa_cache_db_multipart_open(struct mesa_cache_db_multipart *db,
21                              const char *cache_path);
22 
23 void
24 mesa_cache_db_multipart_close(struct mesa_cache_db_multipart *db);
25 
26 void
27 mesa_cache_db_multipart_set_size_limit(struct mesa_cache_db_multipart *db,
28                                        uint64_t max_cache_size);
29 
30 void *
31 mesa_cache_db_multipart_read_entry(struct mesa_cache_db_multipart *db,
32                                    const uint8_t *cache_key_160bit,
33                                    size_t *size);
34 
35 bool
36 mesa_cache_db_multipart_entry_write(struct mesa_cache_db_multipart *db,
37                                     const uint8_t *cache_key_160bit,
38                                     const void *blob, size_t blob_size);
39 
40 void
41 mesa_cache_db_multipart_entry_remove(struct mesa_cache_db_multipart *db,
42                                      const uint8_t *cache_key_160bit);
43 
44 #endif /* MESA_CACHE_DB_MULTIPART_H */
45