11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 2b0104773SPascal Brand /* 3b0104773SPascal Brand * Copyright (c) 2014, STMicroelectronics International N.V. 4b0104773SPascal Brand */ 5b0104773SPascal Brand 6*fbe66cf8SEtienne Carriere #ifndef __TEE_TEE_OBJ_H 7*fbe66cf8SEtienne Carriere #define __TEE_TEE_OBJ_H 8b0104773SPascal Brand 90795afd0SJens Wiklander #include <kernel/tee_ta_manager.h> 10b0104773SPascal Brand #include <sys/queue.h> 11589a4941SJerome Forissier #include <tee_api_types.h> 12589a4941SJerome Forissier #include <types_ext.h> 13b0104773SPascal Brand 14b0104773SPascal Brand #define TEE_USAGE_DEFAULT 0xffffffff 15b0104773SPascal Brand 16b0104773SPascal Brand struct tee_obj { 17b0104773SPascal Brand TAILQ_ENTRY(tee_obj) link; 18b0104773SPascal Brand TEE_ObjectInfo info; 19b0104773SPascal Brand bool busy; /* true if used by an operation */ 20b0104773SPascal Brand uint32_t have_attrs; /* bitfield identifying set properties */ 2140a4fd66SJens Wiklander void *attr; 22879237aeSJens Wiklander size_t ds_pos; 23b0104773SPascal Brand struct tee_pobj *pobj; /* ptr to persistant object */ 24b0311ad8SJens Wiklander struct tee_file_handle *fh; 25b0104773SPascal Brand }; 26b0104773SPascal Brand 278684fde8SJens Wiklander void tee_obj_add(struct user_ta_ctx *utc, struct tee_obj *o); 28b0104773SPascal Brand 29589a4941SJerome Forissier TEE_Result tee_obj_get(struct user_ta_ctx *utc, vaddr_t obj_id, 30b0104773SPascal Brand struct tee_obj **obj); 31b0104773SPascal Brand 328684fde8SJens Wiklander void tee_obj_close(struct user_ta_ctx *utc, struct tee_obj *o); 33b0104773SPascal Brand 348684fde8SJens Wiklander void tee_obj_close_all(struct user_ta_ctx *utc); 35b0104773SPascal Brand 36a2e9a830SCedric Chaumont TEE_Result tee_obj_verify(struct tee_ta_session *sess, struct tee_obj *o); 37a2e9a830SCedric Chaumont 3840a4fd66SJens Wiklander struct tee_obj *tee_obj_alloc(void); 3940a4fd66SJens Wiklander void tee_obj_free(struct tee_obj *o); 4040a4fd66SJens Wiklander 41b0104773SPascal Brand #endif 42