xref: /optee_os/core/include/tee/tee_fs_rpc.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */
2b48323a9SJerome Forissier /*
3b48323a9SJerome Forissier  * Copyright (c) 2016, Linaro Limited
4b48323a9SJerome Forissier  */
5b48323a9SJerome Forissier 
6b48323a9SJerome Forissier /*
712936033SJens Wiklander  * Interface with tee-supplicant for file operations
8b48323a9SJerome Forissier  */
9b48323a9SJerome Forissier 
10*fbe66cf8SEtienne Carriere #ifndef __TEE_TEE_FS_RPC_H
11*fbe66cf8SEtienne Carriere #define __TEE_TEE_FS_RPC_H
12b48323a9SJerome Forissier 
13b48323a9SJerome Forissier #include <stdbool.h>
14b48323a9SJerome Forissier #include <stddef.h>
15b48323a9SJerome Forissier #include <tee_api_types.h>
16c3b3c4deSJens Wiklander #include <tee/tee_fs.h>
177f4173d8SJens Wiklander #include <kernel/thread.h>
18b48323a9SJerome Forissier 
197f4173d8SJens Wiklander struct tee_fs_rpc_operation {
207f4173d8SJens Wiklander 	uint32_t id;
2113eb4e3cSJens Wiklander 	struct thread_param params[THREAD_RPC_MAX_NUM_PARAMS];
227f4173d8SJens Wiklander 	size_t num_params;
237f4173d8SJens Wiklander };
247f4173d8SJens Wiklander 
2522efbd4aSJens Wiklander struct tee_fs_dirfile_fileh;
2622efbd4aSJens Wiklander 
2722efbd4aSJens Wiklander TEE_Result tee_fs_rpc_open_dfh(uint32_t id,
2822efbd4aSJens Wiklander 			       const struct tee_fs_dirfile_fileh *dfh, int *fd);
2922efbd4aSJens Wiklander TEE_Result tee_fs_rpc_create_dfh(uint32_t id,
3022efbd4aSJens Wiklander 				 const struct tee_fs_dirfile_fileh *dfh,
3122efbd4aSJens Wiklander 				 int *fd);
3209a9f39bSJens Wiklander TEE_Result tee_fs_rpc_close(uint32_t id, int fd);
337f4173d8SJens Wiklander 
3409a9f39bSJens Wiklander TEE_Result tee_fs_rpc_read_init(struct tee_fs_rpc_operation *op,
357f4173d8SJens Wiklander 				uint32_t id, int fd, tee_fs_off_t offset,
367f4173d8SJens Wiklander 				size_t data_len, void **out_data);
3709a9f39bSJens Wiklander TEE_Result tee_fs_rpc_read_final(struct tee_fs_rpc_operation *op,
387f4173d8SJens Wiklander 				 size_t *data_len);
397f4173d8SJens Wiklander 
4009a9f39bSJens Wiklander TEE_Result tee_fs_rpc_write_init(struct tee_fs_rpc_operation *op,
417f4173d8SJens Wiklander 				 uint32_t id, int fd, tee_fs_off_t offset,
427f4173d8SJens Wiklander 				 size_t data_len, void **data);
4309a9f39bSJens Wiklander TEE_Result tee_fs_rpc_write_final(struct tee_fs_rpc_operation *op);
447f4173d8SJens Wiklander 
457f4173d8SJens Wiklander 
4609a9f39bSJens Wiklander TEE_Result tee_fs_rpc_truncate(uint32_t id, int fd, size_t len);
4722efbd4aSJens Wiklander TEE_Result tee_fs_rpc_remove_dfh(uint32_t id,
4822efbd4aSJens Wiklander 				 const struct tee_fs_dirfile_fileh *dfh);
49*fbe66cf8SEtienne Carriere #endif /* __TEE_TEE_FS_RPC_H */
50