metee.h(3)

πŸ“¦
version 6.2.5 Β· 5 versions
, in epel 10

NAME πŸ’–

okay bestie, welcome to the metee.h(3) Library Functions Manual page. The name is metee.h, and it is literally giving metee library API. That is the whole NAME moment, no cap. ✨

SYNOPSIS πŸ¦‹

First, the includes β€” keep these exact, bestie:

#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>

Data Structures πŸŽ€

The struct cast is:

  • struct _TEEHANDLE
  • struct tee_device_address
  • struct teeDriverVersion_t

Macros 🌈

Copy these exactly, character for character:

#define TEEHANDLE_ZERO   {0}
#define TEE_ERROR_BASE   0x0000U
#define TEE_SUCCESS   (TEE_ERROR_BASE + 0)
#define TEE_INTERNAL_ERROR   (TEE_ERROR_BASE + 1)
#define TEE_DEVICE_NOT_FOUND   (TEE_ERROR_BASE + 2)
#define TEE_DEVICE_NOT_READY   (TEE_ERROR_BASE + 3)
#define TEE_INVALID_PARAMETER   (TEE_ERROR_BASE + 4)
#define TEE_UNABLE_TO_COMPLETE_OPERATION   (TEE_ERROR_BASE + 5)
#define TEE_TIMEOUT   (TEE_ERROR_BASE + 6)
#define TEE_NOTSUPPORTED   (TEE_ERROR_BASE + 7)
#define TEE_CLIENT_NOT_FOUND   (TEE_ERROR_BASE + 8)
#define TEE_BUSY   (TEE_ERROR_BASE + 9)
#define TEE_DISCONNECTED   (TEE_ERROR_BASE + 10)
#define TEE_INSUFFICIENT_BUFFER   (TEE_ERROR_BASE + 11)
#define TEE_PERMISSION_DENIED   (TEE_ERROR_BASE + 12)
#define TEE_IS_SUCCESS(Status)

Typedefs 🧚

The typedef lineup is:

typedef void(* TeeLogCallback) (bool is_error, const char *fmt,...)
typedef void(* TeeLogCallback2) (bool is_error, const char *msg)
typedef struct _TEEHANDLE TEEHANDLE
typedef TEEHANDLE * PTEEHANDLE
typedef uint16_t TEESTATUS
  • Tiny note on PTEEHANDLE: A type definition for pointer to TEEHANDLE. 🫢

Enumerations ⭐

enum tee_log_level { TEE_LOG_LEVEL_QUIET = 0, TEE_LOG_LEVEL_ERROR = 1,
    TEE_LOG_LEVEL_VERBOSE = 2, TEE_LOG_LEVEL_MAX = 3 }

Functions πŸ’…

Here is the whole function lineup, signatures verbatim β€” do not edit these, bestie:

TEESTATUS TEEAPI TeeInitFull (IN OUT PTEEHANDLE handle, IN const GUID
    *guid, IN const struct tee_device_address device, IN uint32_t
    log_level, IN OPTIONAL TeeLogCallback log_callback)
TEESTATUS TEEAPI TeeInitFull2 (IN OUT PTEEHANDLE handle, IN const GUID
    *guid, IN const struct tee_device_address device, IN uint32_t
    log_level, IN OPTIONAL TeeLogCallback2 log_callback)
TEESTATUS TEEAPI TeeInit (IN OUT PTEEHANDLE handle, IN const GUID *guid,
    IN OPTIONAL const char *device)
TEESTATUS TEEAPI TeeInitHandle (IN OUT PTEEHANDLE handle, IN const GUID
    *guid, IN const TEE_DEVICE_HANDLE device_handle)
TEESTATUS TEEAPI TeeConnect (OUT PTEEHANDLE handle)
TEESTATUS TEEAPI TeeRead (IN PTEEHANDLE handle, IN OUT void *buffer, IN
    size_t bufferSize, OUT OPTIONAL size_t *pNumOfBytesRead, IN OPTIONAL
    uint32_t timeout)
TEESTATUS TEEAPI TeeWrite (IN PTEEHANDLE handle, IN const void *buffer,
    IN size_t bufferSize, OUT OPTIONAL size_t *numberOfBytesWritten, IN
    OPTIONAL uint32_t timeout)
TEESTATUS TEEAPI TeeFWStatus (IN PTEEHANDLE handle, IN uint32_t
    fwStatusNum, OUT uint32_t *fwStatus)
TEESTATUS TEEAPI TeeGetTRC (IN PTEEHANDLE handle, OUT uint32_t *trc_val)
void TEEAPI TeeDisconnect (IN PTEEHANDLE handle)
void TEEAPI TeeCancelIO (IN PTEEHANDLE handle)
TEE_DEVICE_HANDLE TEEAPI TeeGetDeviceHandle (IN PTEEHANDLE handle)
TEESTATUS TEEAPI GetDriverVersion (IN PTEEHANDLE handle, IN OUT
    teeDriverVersion_t *driverVersion)
uint32_t TEEAPI TeeSetLogLevel (IN PTEEHANDLE handle, IN uint32_t
    log_level)
uint32_t TEEAPI TeeGetLogLevel (IN const PTEEHANDLE handle)
TEESTATUS TEEAPI TeeSetLogCallback (IN const PTEEHANDLE handle,
    TeeLogCallback log_callback)
TEESTATUS TEEAPI TeeSetLogCallback2 (IN const PTEEHANDLE handle,
    TeeLogCallback2 log_callback)
uint32_t TEEAPI TeeGetMaxMsgLen (IN const PTEEHANDLE handle)
uint8_t TEEAPI TeeGetProtocolVer (IN const PTEEHANDLE handle)
TEESTATUS TEEAPI TeeGetKind (IN PTEEHANDLE handle, IN OUT char *kind, IN
    OUT size_t *kindSize)

Detailed Description 🌸

metee library API.

Definition in file metee.h.


Macro Definition Documentation πŸ’…

Every macro is getting its own little spotlight, and yes, we are keeping the line numbers. Periodt.

#define TEE_BUSY (TEE_ERROR_BASE + 9)

The device is busy. Definition at line 190 of file metee.h.

#define TEE_CLIENT_NOT_FOUND (TEE_ERROR_BASE + 8)

The ME client is not present in the firmware. Definition at line 188 of file metee.h.

#define TEE_DEVICE_NOT_FOUND (TEE_ERROR_BASE + 2)

The device is not in the system or is not working. Definition at line 176 of file metee.h.

#define TEE_DEVICE_NOT_READY (TEE_ERROR_BASE + 3)

The device is not ready for the operation. Definition at line 178 of file metee.h.

#define TEE_DISCONNECTED (TEE_ERROR_BASE + 10)

The ME client is not connected. Definition at line 192 of file metee.h.

#define TEE_ERROR_BASE 0x0000U

METEE ERROR BASE β€” the base, the blueprint, the 0x0000U. Definition at line 170 of file metee.h.

#define TEE_INSUFFICIENT_BUFFER (TEE_ERROR_BASE + 11)

The buffer for read is not big enough β€” your read buffer needs more room. Definition at line 194 of file metee.h.

#define TEE_INTERNAL_ERROR (TEE_ERROR_BASE + 1)

An internal error occurred in the library. Definition at line 174 of file metee.h.

#define TEE_INVALID_PARAMETER (TEE_ERROR_BASE + 4)

An invalid parameter was used in the call. Definition at line 180 of file metee.h.

#define TEE_IS_SUCCESS( Status)

Value:

(((TEESTATUS)(Status)) == TEE_SUCCESS)

Macro for successful operation result check. Definition at line 200 of file metee.h.

#define TEE_NOTSUPPORTED (TEE_ERROR_BASE + 7)

The operation is not supported. Definition at line 186 of file metee.h.

#define TEE_PERMISSION_DENIED (TEE_ERROR_BASE + 12)

The user doesn't have permission for this operation. Definition at line 196 of file metee.h.

#define TEE_SUCCESS (TEE_ERROR_BASE + 0)

METEE SUCCESS β€” the icon, the goal, the one. Definition at line 172 of file metee.h.

#define TEE_TIMEOUT (TEE_ERROR_BASE + 6)

The operation has timed out. Definition at line 184 of file metee.h.

#define TEE_UNABLE_TO_COMPLETE_OPERATION (TEE_ERROR_BASE + 5)

It is not possible to complete the operation. Definition at line 182 of file metee.h.

#define TEEHANDLE_ZERO {0}

ZERO/NULL device handle. Definition at line 166 of file metee.h.


Typedef Documentation 🧚

typedef TEEHANDLE* PTEEHANDLE

A type definition for pointer to TEEHANDLE. Definition at line 125 of file metee.h.

typedef struct _TEEHANDLE TEEHANDLE

Structure to store connection data.

typedef void(* TeeLogCallback) (bool is_error, const char *fmt,...)

log callback function format.

⚠️ Deprecated since version 6.0.

Definition at line 100 of file metee.h.

typedef void(* TeeLogCallback2) (bool is_error, const char *msg)

log callback function format. Definition at line 104 of file metee.h.

typedef uint16_t TEESTATUS

return status for API functions. Definition at line 168 of file metee.h.


Enumeration Type Documentation πŸ”₯

enum tee_log_level

log level.

Enumerator:

  • TEE_LOG_LEVEL_QUIET β€” no log prints.
  • TEE_LOG_LEVEL_ERROR β€” error log prints.
  • TEE_LOG_LEVEL_VERBOSE β€” verbose log prints.
  • TEE_LOG_LEVEL_MAX β€” upper sentinel.

Definition at line 90 of file metee.h.

πŸ’– FUNCTION DOCUMENTATION πŸ’–

okay bestie, this is the part where we meet literally all the functions πŸ’… each one gets its own little spotlight, and I'm keeping every param, every return value and every deprecation note because that's just how we do it 🫢


🌸 GetDriverVersion

TEESTATUS TEEAPI GetDriverVersion (IN PTEEHANDLE handle, IN OUT teeDriverVersion_t * driverVersion)

Grabs the version of the TEE device driver ✨

heads up bestie: this one is not implemented on Linux πŸ’€ so don't come for me when it doesn't do the thing.

Parameters

  • handle β€” the handle of the session πŸŽ€
  • driverVersion β€” pointer to a driver version struct

Returns: 0 if successful, otherwise an error code 😌


πŸ¦‹ TeeCancelIO

void TEEAPI TeeCancelIO (IN PTEEHANDLE handle)

It tries to stop all in-process reads and writes πŸ›‘ key word tries, no cap.

Parameters

  • handle β€” the handle of the session

πŸŽ€ TeeConnect

TEESTATUS TEEAPI TeeConnect (OUT PTEEHANDLE handle)

Connects to the TEE driver and starts a whole session, main character energy from the jump πŸ‘‘

Parameters

  • handle β€” a handle to the TEE device

Returns: 0 if successful, otherwise an error code πŸ’œ


🌈 TeeDisconnect

void TEEAPI TeeDisconnect (IN PTEEHANDLE handle)

Closes the session to the TEE driver πŸšͺ

fr fr, call this the SECOND you're done with the device β€” other clients might literally be blocked until the session is closed 😭 don't be that person.

Parameters

  • handle β€” the handle of the session to close

⭐ TeeFWStatus

TEESTATUS TEEAPI TeeFWStatus (IN PTEEHANDLE handle, IN uint32_t fwStatusNum, OUT uint32_t * fwStatus)

Pulls up the specified FW status register, like a little status checkup πŸ”

Parameters

  • handle β€” the handle of the session
  • fwStatusNum β€” the FW status register number (0-5) πŸ”’
  • fwStatus β€” the memory to store the obtained FW status

Returns: 0 if successful, otherwise an error code 😌


🧚 TeeGetDeviceHandle

TEE_DEVICE_HANDLE TEEAPI TeeGetDeviceHandle (IN PTEEHANDLE handle)

Returns the handle of the TEE device πŸ’« β€” it obtains a HECI device handle on Windows and an mei device file descriptor on Linux, iykyk.

Parameters

  • handle β€” the handle of the session

Returns: the device handle 🎁


πŸ’œ TeeGetKind

TEESTATUS TEEAPI TeeGetKind (IN PTEEHANDLE handle, IN OUT char * kind, IN OUT size_t * kindSize)

Obtains the kind of the TEE device β€” like a little vibe check on what this thing actually is πŸ¦‹

Parameters

  • handle β€” the handle of the session
  • kind β€” buffer to fill with the device kind as a null terminated string; may be NULL
  • kindSize β€” pointer to the kind buffer size in bytes, updated on out to the number of bytes filled in the buffer, including the null character. If the buffer is NULL, the required size is returned anyway πŸ‘‘

Returns: 0 if successful, otherwise an error code 😌


πŸ“ TeeGetLogLevel

uint32_t TEEAPI TeeGetLogLevel (IN const PTEEHANDLE handle)

Retrieves the current log level πŸ“‹

Parameters

  • handle β€” the handle of the session

Returns: the current log level ✨


πŸŽ€ TeeGetMaxMsgLen

uint32_t TEEAPI TeeGetMaxMsgLen (IN const PTEEHANDLE handle)

Retrieves the client's maximum message length (the MTU, bestie) πŸ“

Parameters

  • handle β€” the handle of the session

Returns: the client maximum message length. If the client never connected, it will return zero πŸ’€


🌸 TeeGetProtocolVer

uint8_t TEEAPI TeeGetProtocolVer (IN const PTEEHANDLE handle)

Retrieves the client protocol version 🏷️

Parameters

  • handle β€” the handle of the session

Returns: the client protocol version. If the client never connected, it will return zero πŸ™ˆ


πŸ”₯ TeeGetTRC

TEESTATUS TEEAPI TeeGetTRC (IN PTEEHANDLE handle, OUT uint32_t * trc_val)

Retrieves the TRC register, periodt πŸ’…

Parameters

  • handle β€” the handle of the session
  • trc_val β€” the memory to store the obtained TRC value

Returns: 0 if successful, otherwise an error code 😌


πŸ‘‘ TeeInit

TEESTATUS TEEAPI TeeInit (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN OPTIONAL const char * device)

Initializes a TEE connection β€” the moment it all begins ✨

Parameters

  • handle β€” a handle to the TEE device. All subsequent calls to the lib's functions must be with this handle πŸ”‘
  • guid β€” GUID of the FW client that wants to start a session
  • device β€” optional device path, set NULL to use the default πŸŽ€

Returns: 0 if successful, otherwise an error code πŸ’œ


⭐ TeeInitFull

TEESTATUS TEEAPI TeeInitFull (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN const struct tee_device_address device, IN uint32_t log_level, IN OPTIONAL TeeLogCallback log_callback)

Initializes a TEE connection, the fuller version 🫢

Deprecated β€” since version 6.0 😭 she's iconic but she's retired, bestie.

Parameters

  • handle β€” a handle to the TEE device. All subsequent calls to the lib's functions must be with this handle πŸ”‘
  • guid β€” GUID of the FW client that wants to start a session
  • device β€” device address structure
  • log_level β€” log level to set (from enum tee_log_level)
  • log_callback β€” pointer to function to run for log write, set NULL to use the built-in function

Returns: 0 if successful, otherwise an error code 😌


🌈 TeeInitFull2

TEESTATUS TEEAPI TeeInitFull2 (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN const struct tee_device_address device, IN uint32_t log_level, IN OPTIONAL TeeLogCallback2 log_callback)

Initializes a TEE connection β€” the sequel, and this one is not deprecated 😌✨

Parameters

  • handle β€” a handle to the TEE device. All subsequent calls to the lib's functions must be with this handle πŸ”‘
  • guid β€” GUID of the FW client that wants to start a session
  • device β€” device address structure
  • log_level β€” log level to set (from enum tee_log_level)
  • log_callback β€” pointer to function to run for log write, set NULL to use the built-in function

Returns: 0 if successful, otherwise an error code πŸ’œ


🧚 TeeInitHandle

TEESTATUS TEEAPI TeeInitHandle (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN const TEE_DEVICE_HANDLE device_handle)

Initializes a TEE connection, but you're bringing your own handle 🎁

Parameters

  • handle β€” a handle to the TEE device. All subsequent calls to the lib's functions must be with this handle πŸ”‘
  • guid β€” GUID of the FW client that wants to start a session
  • device_handle β€” open file handle

Returns: 0 if successful, otherwise an error code 😌


πŸ¦‹ TeeRead

TEESTATUS TEEAPI TeeRead (IN PTEEHANDLE handle, IN OUT void * buffer, IN size_t bufferSize, OUT OPTIONAL size_t * pNumOfBytesRead, IN OPTIONAL uint32_t timeout)

Reads data from the TEE device synchronously πŸ“–

Parameters

  • handle β€” the handle of the session to read from
  • buffer β€” a pointer to a buffer that receives the data read from the TEE device
  • bufferSize β€” the number of bytes to be read
  • pNumOfBytesRead β€” a pointer to the variable that receives the number of bytes read; ignored if set to NULL πŸ™ˆ
  • timeout β€” the timeout to complete the read in milliseconds, zero for infinite ⏳

Returns: 0 if successful, otherwise an error code πŸ’œ


πŸŽ€ TeeSetLogCallback

TEESTATUS TEEAPI TeeSetLogCallback (IN const PTEEHANDLE handle, TeeLogCallback log_callback)

Sets the log callback πŸ“

Deprecated β€” since version 6.0 😭 use the 2 one, bestie.

Parameters

  • handle β€” the handle of the session
  • log_callback β€” pointer to function to run for log write, set NULL to use the built-in function

Returns: 0 if successful, otherwise an error code 😌


⭐ TeeSetLogCallback2

TEESTATUS TEEAPI TeeSetLogCallback2 (IN const PTEEHANDLE handle, TeeLogCallback2 log_callback)

Sets the log callback β€” the current, non-deprecated glow-up version ✨

Parameters

  • handle β€” the handle of the session
  • log_callback β€” pointer to function to run for log write, set NULL to use the built-in function

Returns: 0 if successful, otherwise an error code πŸ’œ


πŸ”₯ TeeSetLogLevel

uint32_t TEEAPI TeeSetLogLevel (IN PTEEHANDLE handle, IN uint32_t log_level)

Sets the log level 🎚️

Parameters

  • handle β€” the handle of the session
  • log_level β€” log level to set

Returns: the previous log level πŸ‘€ (yes, she remembers what you were before)


🌸 TeeWrite

TEESTATUS TEEAPI TeeWrite (IN PTEEHANDLE handle, IN const void * buffer, IN size_t bufferSize, OUT OPTIONAL size_t * numberOfBytesWritten, IN OPTIONAL uint32_t timeout)

Writes the specified buffer to the TEE device synchronously ✍️

Parameters

  • handle β€” the handle of the session to write to
  • buffer β€” a pointer to the buffer containing the data to be written to the TEE device
  • bufferSize β€” the number of bytes to be written
  • numberOfBytesWritten β€” a pointer to the variable that receives the number of bytes written; ignored if set to NULL πŸ™ˆ
  • timeout β€” the timeout to complete the write in milliseconds, zero for infinite ⏳

Returns: 0 if successful, otherwise an error code πŸ’œ


πŸŽ€ AUTHOR πŸŽ€

Generated automatically by Doxygen for metee from the source code πŸ€–βœ¨ like yes queen, the docs wrote themselves.


and that's a wrap on metee.h(3) bestie!! 🌈 This beauty comes from the metee source, version-tagged metee at the bottom with the date, and honestly? she ate. go forth, connect to your TEE driver, and remember to TeeDisconnect when you're done πŸ’…πŸ’– mwah 🫢

πŸ“¦ where this page comes from
  • epel 10: intel-metee-devel 6.2.5-1.el10_3 Β· Apache-2.0 AND BSD-3-Clause AND ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause)
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms