TEE_Result TA_InvokeCommandEntryPoint()

in TAs/optee_ta/AuthVars/AuthVars.c [312:359]


TEE_Result TA_InvokeCommandEntryPoint(void      *sess_ctx,
                                      uint32_t   cmd_id,
                                      uint32_t   param_types,
                                      TEE_Param  params[4])
{
    TEE_Result Status;

    // Unused parameter(s)
    UNREFERENCED_PARAMETER(sess_ctx);

    // Can't proceed without init
    if (!AuthVarInitialized && (cmd_id != TA_AUTHVAR_EXIT_BOOT_SERVICES))
    {
        return TEE_ERROR_BAD_STATE;
    }

    // Handle command invocation
    switch (cmd_id) {
        case TA_AUTHVAR_GET_VARIABLE: {
            Status = AuthVarGet(param_types, params);
            return Status;
        }

        case TA_AUTHVAR_GET_NEXT_VARIABLE: {
            Status = AuthVarGetNext(param_types, params);
            return Status;
        }

        case TA_AUTHVAR_SET_VARIABLE: {
            Status = AuthVarSet(param_types, params);
            return Status;
        }

        case TA_AUTHVAR_QUERY_VARINFO: {
            Status = AuthVarQuery(param_types, params);
            return Status;
        }

        case TA_AUTHVAR_EXIT_BOOT_SERVICES: {
            AuthVarIsRuntime = true;
            return TEE_SUCCESS;
        }

        default: {
            return TEE_ERROR_BAD_PARAMETERS;
        }
    }
}