xref: /linux-6.15/include/uapi/linux/cachefiles.h (revision c8383054)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _LINUX_CACHEFILES_H
3 #define _LINUX_CACHEFILES_H
4 
5 #include <linux/types.h>
6 
7 /*
8  * Fscache ensures that the maximum length of cookie key is 255. The volume key
9  * is controlled by netfs, and generally no bigger than 255.
10  */
11 #define CACHEFILES_MSG_MAX_SIZE	1024
12 
13 enum cachefiles_opcode {
14 	CACHEFILES_OP_OPEN,
15 };
16 
17 /*
18  * Message Header
19  *
20  * @msg_id	a unique ID identifying this message
21  * @opcode	message type, CACHEFILE_OP_*
22  * @len		message length, including message header and following data
23  * @object_id	a unique ID identifying a cache file
24  * @data	message type specific payload
25  */
26 struct cachefiles_msg {
27 	__u32 msg_id;
28 	__u32 opcode;
29 	__u32 len;
30 	__u32 object_id;
31 	__u8  data[];
32 };
33 
34 /*
35  * @data contains the volume_key followed directly by the cookie_key. volume_key
36  * is a NUL-terminated string; @volume_key_size indicates the size of the volume
37  * key in bytes. cookie_key is binary data, which is netfs specific;
38  * @cookie_key_size indicates the size of the cookie key in bytes.
39  *
40  * @fd identifies an anon_fd referring to the cache file.
41  */
42 struct cachefiles_open {
43 	__u32 volume_key_size;
44 	__u32 cookie_key_size;
45 	__u32 fd;
46 	__u32 flags;
47 	__u8  data[];
48 };
49 
50 #endif
51