1/* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include "script_registercmd.h" 16#include <cstring> 17#include <dlfcn.h> 18#include "dump.h" 19#include "script_instruction.h" 20#include "script_instructionhelper.h" 21#include "script_manager.h" 22 23using namespace Uscript; 24 25namespace BasicInstruction { 26int32_t ScriptRegisterCmd::Execute(UScriptEnv &env, UScriptContext &context) 27{ 28 ScriptInstructionHelper* helper = ScriptInstructionHelper::GetBasicInstructionHelper(); 29 if (helper == nullptr) { 30 USCRIPT_LOGE("Fail to get instruction helper"); 31 UPDATER_LAST_WORD(USCRIPT_INVALID_PARAM); 32 return USCRIPT_INVALID_PARAM; 33 } 34 35 std::string instrName; 36 std::string libName; 37 int32_t ret = context.GetParam(0, instrName); 38 if (ret != USCRIPT_SUCCESS) { 39 USCRIPT_LOGE("Fail to get param"); 40 UPDATER_LAST_WORD(ret); 41 return ret; 42 } 43 ret = context.GetParam(1, libName); 44 if (ret != USCRIPT_SUCCESS) { 45 USCRIPT_LOGE("Fail to get param"); 46 UPDATER_LAST_WORD(ret); 47 return ret; 48 } 49 50 // 动态加载对应的so,然后获取对应的指令 51 return helper->RegisterUserInstruction(libName, instrName); 52} 53} // namespace BasicInstruction 54