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