xref: /optee_os/core/include/tee/tee_obj.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
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