• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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