libteec: Move OP-TEE defined fields into an imp struct

GlobalPlatform TEE Client API Specification v1.0 specifies that
the structs TEEC_Context, TEEC_Session, TEEC_SharedMemory,
and TEEC_Operation shall have a user defined struct named imp.
In OP-TEE the struct is not there and instead the user defined
fields are declared directly in the top structs.
This commit introduces the imp struct to better support using
different implementations. The imp fields now represent the
implementation defined parts of the structs that was
previously declared directly in the top struct. All previously
available parameters are preserved in the imp struct.
The updated version of the imp structure makes it easier to
create a binding for Rust.
Adding the missing imp struct to the structs in OP-TEE is an
ABI breakage which requires a version major update of libteec.

Link: https://github.com/OP-TEE/optee_client/issues/348
Reported-by: Tom Hebb <tommyhebb@gmail.com>
Signed-off-by: Julianus Larson <julianus.larson@linaro.org>
Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
5 files changed
tree: 04b99fcd10a1d882f3dd0efd1bf689d0bd5875ab
  1. .github/
  2. ci/
  3. libckteec/
  4. libseteec/
  5. libteeacl/
  6. libteec/
  7. scripts/
  8. tee-supplicant/
  9. .gitattributes
  10. .gitignore
  11. Android.bp
  12. CMakeLists.txt
  13. CMakeToolchain.txt
  14. config.mk
  15. flags.mk
  16. LICENSE
  17. Makefile
  18. optee_client.device.mk
  19. README.md
  20. typedefs.checkpatch
README.md

OP-TEE Client API

This git contains source code for the non-secure side implementation of the OP-TEE project making up the client library and tee-supplicant.

All official OP-TEE documentation has moved to http://optee.readthedocs.io. The information that used to be here in this git can be found under optee_client.

// OP-TEE core maintainers