WO2015027732A1 - 一种动态补丁函数的方法及装置、存储介质 - Google Patents

一种动态补丁函数的方法及装置、存储介质 Download PDF

Info

Publication number
WO2015027732A1
WO2015027732A1 PCT/CN2014/080001 CN2014080001W WO2015027732A1 WO 2015027732 A1 WO2015027732 A1 WO 2015027732A1 CN 2014080001 W CN2014080001 W CN 2014080001W WO 2015027732 A1 WO2015027732 A1 WO 2015027732A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
instructions
function
modified
patched function
Prior art date
Application number
PCT/CN2014/080001
Other languages
English (en)
French (fr)
Inventor
尹峰
朱明星
Original Assignee
中兴通讯股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Priority to US14/914,344 priority Critical patent/US9483254B2/en
Priority to EP14840123.5A priority patent/EP3040854B1/en
Priority to RU2016109180A priority patent/RU2642362C2/ru
Publication of WO2015027732A1 publication Critical patent/WO2015027732A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Definitions

  • the present invention relates to the field of communications, and in particular, to a method and apparatus for dynamically patching functions, and a storage medium. Background technique
  • a software patch is typically a separate software unit that is released to modify certain features of an existing software system or to correct certain failures of an existing software system.
  • the software dynamic patch upgrade technology can complete the repair of system functions or faults without affecting the normal operation of the system.
  • the function that is running in the existing system is replaced with a patch function, thereby changing the function of the function.
  • the upgrade service module parses the patch file in the foreground target machine to obtain the patch function funcA and the address of the patch function funcC in memory.
  • the prior art long jump instruction must be completed by at least three instructions. If the start instruction of the patched function is modified to grow the jump instruction, at least three instructions from the beginning of the patched function start instruction are modified. The following situations occur:
  • the program counter (Program Counter, PC for short) with task A is located at the second or third instruction of the patched function. When task A gets scheduled again, it will produce unpredictable as a result of. 2.
  • the PC pointer of task B is located at the first instruction of the patched function, and task B can execute the patch function normally when it is scheduled to run again. 3.
  • the PC pointer of task C is located at the unmodified command of the patched function, and task C can again execute the patched function when the schedule is run again.
  • the embodiment of the invention provides a method and a device for dynamically patching functions, which are used to solve the problem that the modified system may not operate normally after the start instruction of the patched function is modified and the jump instruction is modified.
  • an embodiment of the present invention provides a method for dynamically patching a function, including: restoring N long jump instructions at a modified start command of a patched function according to a pre-mark of a currently running task The original instruction of the patched function, wherein the N is an integer greater than or equal to 3; when the current task exits running, the N original instructions at the beginning of the start instruction are modified to a long jump Transfer instructions to dynamic patch functions.
  • the method further includes: Determining a task to be modified, wherein the task to be modified is The PC pointer is located at the task of the N instructions at the start instruction of the patch function, and the position of the N instructions is used to record the modified long jump instruction of the patched function; Mark to determine the type of all tasks currently described.
  • the method further includes: determining, if the task in the all tasks is to be run again, whether the task to be currently run is marked; the task to be currently run is marked In the case, the N long jump instructions at the start command of the patched function are restored to the original instructions of the patched function.
  • the method further includes: determining that the current task is a marked task when the currently running task is about to be exited; and determining that the current task is the marked task, Whether the PC pointer of the task is still within the range of N instructions at the start instruction of the patched function; if yes, restoring the N original instructions at the start command of the patched function to the patched function Long jump instruction; if not, cancel the mark of the current task that is about to exit the run, and then restore the N original instructions at the start command of the patched function to the long jump instruction of the patched function In the case where the current task is not the marked task, then jump to the task to be run. .
  • the method further includes: modifying the N original instructions at the start instruction of the patched function as long jump instructions, and backing up the original instructions.
  • the embodiment of the present invention further provides an apparatus for dynamically patching a function, including: a recovery module, configured to: N long jump instructions at a modified instruction start instruction according to a pre-mark of a currently running task Reverting to the original instruction of the patched function, where N is an integer greater than or equal to 3; the first modifying module is configured to: when the current task exits running, the N at the beginning of the starting instruction The original instruction described in the clause is modified into a long jump instruction to dynamically patch the function.
  • a recovery module configured to: N long jump instructions at a modified instruction start instruction according to a pre-mark of a currently running task Reverting to the original instruction of the patched function, where N is an integer greater than or equal to 3
  • the first modifying module is configured to: when the current task exits running, the N at the beginning of the starting instruction
  • the original instruction described in the clause is modified into a long jump instruction to dynamically patch the function.
  • the apparatus further includes: a determining module configured to traverse all tasks in the system, Determining a task to be modified, wherein the task to be modified is a task of a N instruction of a PC pointer located at a start instruction of the patched function, and the location of the N instructions is used to record the modified A long jump instruction of the patched function; a marking module configured to mark the task to be modified to determine the type of all the tasks.
  • a determining module configured to traverse all tasks in the system, Determining a task to be modified, wherein the task to be modified is a task of a N instruction of a PC pointer located at a start instruction of the patched function, and the location of the N instructions is used to record the modified A long jump instruction of the patched function
  • a marking module configured to mark the task to be modified to determine the type of all the tasks.
  • the device further includes: a first determining module, configured to determine, if the task in the all tasks is to be run again, whether the task to be currently run is marked; the recovery module is further configured to be In the case that the task to be currently run is marked, the N long jump instructions at the start instruction of the patched function are restored to the original instructions of the patched function.
  • a first determining module configured to determine, if the task in the all tasks is to be run again, whether the task to be currently run is marked
  • the recovery module is further configured to be In the case that the task to be currently run is marked, the N long jump instructions at the start instruction of the patched function are restored to the original instructions of the patched function.
  • the device further includes: a second determining module, configured to determine whether the current task is a marked task when the currently running task is about to exit; and further configured to mark the current task as the In the case of the task, it is determined whether the PC pointer of the task is still located in the range of N instructions at the start instruction of the patched function; the recovery module is further configured to be located in the N pieces of the PC pointer In the case of the instruction range, the N original instructions at the start command of the patched function are restored to the long jump instruction of the patched function; the marking module is further configured not to be in the PC pointer If the value is within the range of the N instructions, cancel the flag of the current task that is about to exit the operation, and then trigger the recovery module to restore the N original instructions at the start command of the patched function to the a long jump instruction of the patch function; the jump module is configured to jump to the task to be run if the current task is not the marked task.
  • a second determining module configured to determine whether the current task is a marked
  • the device further includes: a second modification module, configured to modify the N original instructions at the start instruction of the patched function as a long jump instruction, and back up the original instruction.
  • a second modification module configured to modify the N original instructions at the start instruction of the patched function as a long jump instruction, and back up the original instruction.
  • the embodiment of the invention further describes a storage medium, wherein the storage medium stores a computer program, and the computer program is configured to execute the method of the dynamic patch function.
  • the N long jump instructions at the modified start command of the patch function are first restored to the original instructions of the patched function, and when the current task exits the run, the start command is opened.
  • the original N instructions are modified to long jump instructions, and the patch function is replaced.
  • the dynamic patch of the function is implemented.
  • the modified jump instruction is modified. The system may not function properly.
  • FIG. 1 is a flowchart of a method for dynamically patching a function in an embodiment of the present invention
  • FIG. 2 is a first schematic structural diagram of an apparatus for dynamically patching functions in an embodiment of the present invention
  • FIG. 3 is a second schematic structural diagram of an apparatus for dynamically patching functions in an embodiment of the present invention
  • FIG. 4 is a dynamic patch in an embodiment of the present invention
  • FIG. 5 is a fourth structural diagram of a device for dynamically patching functions in an embodiment of the present invention
  • FIG. 6 is a schematic diagram showing a fifth structure of a device for dynamically patching functions according to an embodiment of the present invention
  • 7 is a flow chart of initializing a dynamic patch function in a preferred embodiment of the present invention
  • Figure 8 is a flow diagram showing the processing of a hook function for task A to switch to task B in a preferred embodiment of the present invention. detailed description
  • the present invention provides a method and device for dynamically patching functions. And the examples, the present invention will be further described in detail. It is understood that the specific embodiments described herein are merely illustrative of the invention and are not intended to limit the invention.
  • This embodiment provides a method for dynamically patching a function.
  • the flow of the method is as shown in FIG. 1, and includes steps S102 to S104.
  • Step S102 Restore the N long jump instructions at the modified patch function start instruction to the original instructions of the patched function according to the pre-mark of the currently running task, where N is an integer greater than or equal to 3.
  • N is an integer greater than or equal to 3.
  • the value of N is determined according to the actual number of long jump instructions.
  • Step S104 When the current task exits running, modify the N original instructions at the beginning of the start instruction to a long jump instruction to dynamically patch the function.
  • the patch function is replaced, the dynamic patch of the function is implemented, and the start command of the patched function is modified to grow and jump. After the instruction, the modified system may not work properly.
  • all tasks in the system may be traversed to determine which tasks are The task to be modified, wherein the task to be modified is a task of the N instructions of the PC pointer located at the start instruction of the patch function; after the task to be modified is determined, the task to be modified is marked to facilitate the subsequent process. Identification of this type of task. For example, if the task to be modified is marked as 1, the task to be modified can be determined as the task to be modified as long as the task marked 1 is detected in the subsequent implementation.
  • the generated task switch hook function can be called by the operating system when the task switch occurs, by calling the task switch hook function to temporarily restore the original command of the patch function as needed, here the task switch hook.
  • the current task When the currently running task is about to be exited, it is judged whether the current task is a marked task; if the current task is a marked task, it is determined whether the PC pointer of the task is still located at the N of the patched function start instruction. Within the scope of the instruction; if yes, it indicates that the problem will still occur when the task is run again next time, then the N original instructions at the beginning of the patch function will be restored to the long jump instruction of the patched function; if not, Note that the next time you run the task again, there will be no problem. Then cancel the mark of the current task that will be exited, and then restore the N original instructions at the start command of the patch function to the long jump instruction of the patched function. In the case where the current task is not a marked task, then jump to the task that is about to run.
  • the embodiment also provides a device for dynamically patching functions.
  • the structure of the device is shown in FIG. 2, and includes: a recovery module 10 configured to start a modified patched function start command according to a pre-mark of a currently running task.
  • the N long jump instructions are restored to the original instructions of the patched function, where N is an integer greater than or equal to 3;
  • the first modification module 12, coupled with the recovery module 10, configured to be in the case of the current task exiting the operation , modify the N original instructions at the beginning of the start instruction to a long jump instruction to dynamically patch the function.
  • FIG. 3 shows a preferred structure of the foregoing apparatus.
  • the method further includes: a determining module 14 configured to traverse all tasks in the system to determine a task to be modified, wherein the task to be modified is a PC.
  • the pointer is located at the task of the N instructions at the start instruction of the patch function, the position of the N instructions is used to record the long jump instruction of the modified patched function;
  • the marking module 16 is coupled with the determining module 14 and the recovery module 10, The configuration is to mark the task to be modified to determine the type of all current tasks.
  • FIG. 4 shows another preferred structure of the above apparatus.
  • the method further includes: a first judging module 20 configured to determine that the current operation is to be performed when the tasks in all tasks are to be run again. Whether the task is marked; the recovery module 10, coupled with the first determining module 20, is further configured to: in the case where the currently running task is marked, the N at the start command of the patched function The long jump instruction is restored to the original instruction of the patched function.
  • FIG. 5 shows still another preferred structure of the above apparatus.
  • the method further includes: a second judging module 22 coupled with the marking module 16 and the recovery module 10, configured to exit the currently running task. Determining whether the current task is a marked task; or configuring, in the case that the current task is a marked task, determining whether the PC pointer of the task is still within the range of N instructions at the start instruction of the patch function;
  • the recovery module 10 is further configured to restore the N original instructions at the start command of the patch function to the long jump instruction of the patched function when the PC pointer is located within the N command range; Configured to cancel the mark of the current task that is about to exit the operation if the PC pointer is no longer within the range of N instructions, and then trigger the recovery module to restore the N original instructions at the start command of the patch function to the patched function.
  • a long jump instruction a jump module 24, coupled to the second determination module 22, configured to be in a case where the current task is not a marked task, Then jump to the task.
  • FIG. 6 shows still another preferred structure of the foregoing apparatus.
  • the method further includes: a second modification module 30 coupled to the tag module 16 and the recovery module 10, configured to modify the start command of the patched function.
  • the N original instructions are modified to long jump instructions, and the original instructions are backed up.
  • AP application processor
  • CPU central processing unit
  • DSP digital signal processor
  • Array FPGA, Field Programmable Gate Array
  • the embodiment provides a dynamic patch function method, wherein the long jump instruction is three, and the method can start the modified patched function start instruction when the task A is again scheduled to run in the first case.
  • the three long jump instructions at the place are temporarily restored to the original patched function instructions, etc.
  • Task A When exiting the schedule, the three instructions at the beginning of the patch function start command are changed to the jump instruction.
  • the method can be applied to dynamic patch upgrade of an embedded system, especially when the relative address of the patch function and the patch function exceeds the short jump address range.
  • Step S702 the lock is interrupted, and the task switching is prohibited.
  • Step S704 traversing all running tasks in the system, and determining whether the PC pointer of the task is within the range of three instructions at the beginning of the patched function. If yes, step S706 is performed, otherwise step S708 is performed.
  • Step S706 a flag 1 is set in the task control block of the task for the task where the PC pointer is located at the three instructions of the patch function start instruction. This flag 1 is used to identify that the task has to be scheduled, and the runtime needs to restore the initial jump instruction to the original instruction.
  • Step S708 modifying the three instructions starting from the start instruction of the patch function to be a long jump instruction, and backing up the original instruction.
  • Step S710 the registration task switches the hook function, so that the system calls the hook function when the task switching occurs.
  • Step S712 opening an interrupt, allowing task switching.
  • the above process marks the current running tasks in the system, and the above marking makes it easier to distinguish between tasks that need to be restored to the original instructions.
  • Step S802 the lock is interrupted, and the task switching is prohibited.
  • Step S804 it is judged whether there is a flag 1 in the task control block of the task A. If yes, it means that the three instructions in the start command of the patch function need to be restored to the original index when the task A runs in front. If yes, execute step S806. Otherwise, the instruction at the start instruction of the patch function is a long jump instruction, and step S812 is performed.
  • Step S806 it is judged whether the PC pointer of the task A is still within the range of three instructions at the start instruction of the patch function. If yes, it indicates that after task A gets running again, it still needs to restore the patched function start command to the original patched function command. Then, execute step S810, if no, it means that task A is not scheduled to be resumed when it is scheduled to run again.
  • the patch function start instruction is the original patched function instruction, and step S808 is performed.
  • step S808 the flag 1 in the task control block of task A is cleared.
  • Step S810 modifying the three instructions at the start instruction of the patched function as a long jump instruction, and backing up the original instruction. At this point, the process of ending the running of task A is completed, and then, the process of task B that is about to start running.
  • Step S812 it is judged whether there is a flag 1 in the task control block of the task B. If yes, the task B is a task to be modified, then step S814 is performed, otherwise, step S816 is performed.
  • Step S814 restoring the long jump instruction at the start instruction of the patch function to the original instruction.
  • the embodiment of the invention further describes a storage medium, wherein the storage medium stores a computer program, and the computer program is configured to execute the dynamic patch function of the foregoing embodiment.
  • the invention first restores the N long jump instructions at the modified instruction start instruction to the original instructions of the patched function, and when the current task exits the run, the N originals at the beginning of the start instruction are The instruction is modified into a long jump instruction, and the replacement of the patch function is completed, and the dynamic patch of the function is implemented, and the modified jump instruction is modified after the start instruction of the patched function is modified. System may not work properly

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种动态补丁函数的方法及装置、存储介质,其中,该方法包括:根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,其中,N为大于等于3的整数;在当前任务退出运行时,将起始指令开始处的N条原有指令修改为长跳转指令,以动态补丁函数。通过运用该方法,在任务得到运行时根据需要先将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,在任务退出运行时再将起始指令开始处的N条原有指令修改为长跳转指令,完成了补丁函数的替换,实现函数的动态补丁,解决了在被补丁函数的起始指令被修改成长跳转指令后,修改后的系统可能无法正常运行的问题。

Description

一种动态补丁函数的方法及装置、 存储介质 技术领域
本发明涉及通讯领域, 特别是涉及一种动态补丁函数的方法及装置、 存储介质。 背景技术
软件补丁一般是为了修改现有软件系统某些功能或糾正现有软件系统 某些故障而发布的独立的软件单元。 软件动态补丁升级技术能在不影响系 统正常运行的情况下完成对系统功能或故障的修复, 一般是将现有系统中 正在运行的函数替换成补丁函数, 从而改变了函数的功能。
在嵌入式系统中, 动态补丁升级的技术虽然有多种实现方案, 总结起 来主要包括以下几个关键步骤:
1、 在后台 (一般是个人计算机)重新编写、 编译补丁函数 funcA, 生 成补丁文件 fileB。
2、 将补丁文件 fileB下载到前台目标机中。
3、 前台目标机中升级服务模块解析补丁文件, 获取补丁函数 funcA和 被补丁函数 funcC在内存中的地址。
4、修改被补丁函数 funcC首指令为跳转指令, 跳转到补丁函数 funcA。 这样, 调用函数 funcC时, 由于 funcC的起始指令是一个跳转指令, 于 是直接跳转到函数 funcA中去执行, 返回时直接返回到调用函数 funcC的 下一条指令处, 从而达到函数 funcA取代函数 funcC的目的。
如果补丁函数 funcA和被补丁函数 funcC在内存中的相对地址较小位 于短跳转地址范围内, 使用短跳转就能实现动态补丁升级。 但是随着软件 规模的不断增大, 当版本的映像文件的代码段和数据段的大小超过短跳转 地址范围时, 补丁函数和被补丁函数在内存中的相对距离也超过短跳转地 址范围时, 使用短跳转就无法实现了。
现有技术长跳转指令至少要用三条指令来完成, 如果被补丁函数的起 始指令被修改成长跳转指令, 也就至少要修改从被补丁函数起始指令开始 处的三条指令, 就会出现如下几种情况:
1、 正好有任务 A的程序计数器(Program Counter, 简称为 PC )指针 位于被补丁函数的起始第二条或第三条指令处, 则当任务 A再次得到调度 运行时将会产生不可预知的后果。 2、 任务 B的 PC指针位于被补丁函数的 起始第一条指令处, 则任务 B再次得到调度运行时能正常执行补丁函数。 3.任务 C的 PC指针位于被补丁函数的未被修改的指令处,则任务 C再次得 到调度运行时能正常执行被补丁函数。
基于上述过程可以看出, 现有技术在被补丁函数的起始指令被修改成 长跳转指令后, 没有一种能够保证修改后的系统正常运行的方法。 发明内容
本发明实施例提供了一种动态补丁函数的方法及装置, 用以解决现有 技术在被补丁函数的起始指令被修改成长跳转指令后, 修改后的系统可能 无法正常运行的问题。
为解决上述技术问题, 一方面, 本发明实施例提供一种动态补丁函数 的方法, 包括: 根据当前运行任务的预先标记将已修改的被补丁函数起始 指令处的 N条长跳转指令恢复成所述被补丁函数的原有指令, 其中, 所述 N为大于等于 3 的整数; 在当前任务退出运行时, 将所述起始指令开始处 的 N条所述原有指令修改为长跳转指令, 以动态补丁函数。
优选地, 根据当前运行任务的预先标记将已修改的被补丁函数起始指 令处的 N条长跳转指令恢复成所述被补丁函数的原有指令之前, 还包括: 历遍系统中所有任务, 以确定待修改型任务, 其中, 所述待修改型任务为 PC指针位于所述被补丁函数起始指令处的 N条指令的任务, 所述 N条指 令的位置用于记录已修改的所述被补丁函数的长跳转指令; 对所述待修改 型任务进行标记, 以确定当前所述所有任务的类型。
优选地, 对所述待修改型任务进行标记之后, 还包括: 当要再次运行 所述所有任务中的任务的情况下, 判断当前要运行的任务是否被标记; 在 当前要运行的任务被标记的情况下, 将所述被补丁函数起始指令处的 N条 长跳转指令恢复成所述被补丁函数的原有指令。
优选地, 所述方法还包括: 当即将退出当前运行的任务时, 判断所述 当前任务是否为被标记的任务; 在所述当前任务为所述被标记的任务的情 况下,则再判断该任务的 PC指针是否仍位于所述被补丁函数起始指令处的 N条指令范围内; 如果是, 则将所述被补丁函数起始指令处的 N条原有指 令恢复成所述被补丁函数的长跳转指令; 如果否, 则先取消即将退出运行 的当前任务的标记, 再将所述被补丁函数起始指令处的 N条原有指令恢复 成所述被补丁函数的长跳转指令; 在所述当前任务不是所述被标记的任务 的情况下, 则跳转至即将运行的任务。。
优选地, 遍历系统中所有正在运行的任务以确定待修改型任务之后, 还包括: 修改所述被补丁函数起始指令处的 N条原有指令为长跳转指令, 并备份原有指令。
另一方面, 本发明实施例还提供一种动态补丁函数的装置, 包括: 恢 复模块, 配置为根据当前运行任务的预先标记将已修改的被补丁函数起始 指令处的 N条长跳转指令恢复成所述被补丁函数的原有指令, 其中, 所述 N为大于等于 3 的整数; 第一修改模块, 配置为在当前任务退出运行的情 况下, 将所述起始指令开始处的 N条所述原有指令修改为长跳转指令, 以 动态补丁函数。
优选地, 所述装置还包括: 确定模块, 配置为遍历系统中所有任务, 以确定待修改型任务, 其中, 所述待修改型任务为 PC指针位于所述被补丁 函数起始指令处的 N条指令的任务, 所述 N条指令的位置用于记录已修改 的所述被补丁函数的长跳转指令; 标记模块, 配置为对所述待修改型任务 进行标记, 以确定所述所有任务的类型。
优选地, 所述装置还包括: 第一判断模块, 配置为当要再次运行所述 所有任务中的任务的情况下, 判断当前要运行的任务是否被标记; 所述恢 复模块, 还配置为在当前要运行的任务被标记的情况下, 将所述被补丁函 数起始指令处的 N条长跳转指令恢复成所述被补丁函数的原有指令。
优选地, 所述装置还包括: 第二判断模块, 配置为在即将退出当前运 行的任务时, 判断所述当前任务是否为被标记的任务; 还配置为在所述当 前任务为所述被标记的任务的情况下,再判断该任务的 PC指针是否仍位于 所述被补丁函数起始指令处的 N条指令范围内; 所述恢复模块, 还配置为 在所述 PC指针位于所述 N条指令范围内的情况下, 将所述被补丁函数起 始指令处的 N条原有指令恢复成所述被补丁函数的长跳转指令; 所述标记 模块, 还配置为在所述 PC指针不再位于所述 N条指令范围内的情况下, 取消即将退出运行的当前任务的标记, 再触发所述恢复模块将所述被补丁 函数起始指令处的 N条原有指令恢复成所述被补丁函数的长跳转指令; 跳 转模块, 配置为在所述当前任务不是所述被标记的任务的情况下, 则跳转 至即将运行的任务。
优选地, 所述装置还包括: 第二修改模块, 配置为修改所述被补丁函 数起始指令处的 N条原有指令为长跳转指令, 并备份原有指令。
本发明实施例还记载了一种存储介质, 所述存储介质中存储有计算机 程序, 所述计算机程序配置为执行前述的动态补丁函数的方法。
本发明实施例先将已修改的被补丁函数起始指令处的 N条长跳转指令 恢复成被补丁函数的原有指令, 在当前任务退出运行时, 再将起始指令开 始处的 N条原有指令修改为长跳转指令, 就完成了补丁函数的替换, 实现 函数的动态补丁, 解决了在被补丁函数的起始指令被修改成长跳转指令后, 修改后的系统可能无法正常运行的问题。 附图说明
图 1 是本发明实施例中动态补丁函数的方法的流程图;
图 2 是本发明实施例中动态补丁函数的装置的第一种结构示意图; 图 3 是本发明实施例中动态补丁函数的装置的第二种结构示意图; 图 4 是本发明实施例中动态补丁函数的装置的第三种结构示意图; 图 5 是本发明实施例中动态补丁函数的装置的第四种结构示意图; 图 6是本发明实施例中动态补丁函数的装置的第五种结构示意图 图 7是本发明优选实施例中动态补丁函数初始化流程图;
图 8是本发明优选实施例中任务 A切换到任务 B的钩子函数处理流程 图。 具体实施方式
为了解决现有技术在被补丁函数的起始指令被修改成长跳转指令后, 修改后的系统可能无法正常运行的问题, 本发明提供了一种动态补丁函数 的方法及装置, 以下结合附图以及实施例, 对本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并不限定本发 明。
本实施例提供了一种动态补丁函数的方法, 该方法的流程如图 1所示, 包括步骤 S102至步骤 S104。
步骤 S102, 根据当前运行任务的预先标记将已修改的被补丁函数起始 指令处的 N条长跳转指令恢复成被补丁函数的原有指令, 其中, N为大于 等于 3的整数。 实施时, N 的取值是根据实际的长跳转指令的条数来确定的, 在调用 当前任务时, 将被补丁函数起始指令处的 N条长跳转指令恢复成被补丁函 数的原有指令, 原程序就可以照常执行。
步骤 S104, 在当前任务退出运行时, 将起始指令开始处的 N条原有指 令修改为长跳转指令, 以动态补丁函数。
将起始指令开始处的 N条原有指令再次修改为长跳转指令后, 就完成 了补丁函数的替换, 实现函数的动态补丁, 解决了在被补丁函数的起始指 令被修改成长跳转指令后, 修改后的系统可能无法正常运行的问题。
根据当前运行任务的预先标记,将已修改的被补丁函数起始指令处的 N 条长跳转指令恢复成被补丁函数的原有指令之前, 可以先遍历系统中所有 任务, 以确定哪些任务为待修改型任务, 其中, 待修改型任务为 PC指针位 于被补丁函数起始指令处的 N条指令的任务; 在确定了待修改型任务后, 对待修改型任务进行标记, 以方便后续过程中对该类任务的识别。 例如, 将待修改型任务标记为 1, 则后续实施过程中, 只要检测到被标记 1的任务 就可以确定为待修改型任务。
在遍历系统中所有正在运行的任务以确定待修改型任务之后, 还可以 直接修改被补丁函数起始指令处的 N条原有指令为长跳转指令, 并备份原 有指令, 完成补丁函数的修改; 再注册任务切换钩子函数, 生成的任务切 换钩子函数可以在发生任务切换时被操作系统调用, 通过调用任务切换钩 子函数来根据需要临时恢复补丁函数的原有指令, 此处对任务切换钩子函 数不做具体说明, 本领域技术人员能够根据本实施例公开的内容设计该函 数。
实施过程中, 当要再次运行所有任务中的任务的情况下, 判断当前要 运行的任务是否被标记。 在当前要运行的任务被标记的情况下, 将被补丁 函数起始指令处的 N条长跳转指令恢复成被补丁函数的原有指令。 如果并 未被标记, 则正常运行该程序。
当即将退出当前运行的任务时, 判断当前任务是否为被标记的任务; 在当前任务为被标记的任务的情况下,再判断该任务的 PC指针是否仍位于 被补丁函数起始指令处的 N条指令范围内; 如果是, 说明下次再运行该任 务时仍然会出现问题, 则将被补丁函数起始指令处的 N条原有指令恢复成 被补丁函数的长跳转指令; 如果否, 说明下次再运行该任务时不会出现问 题, 则先取消即将退出运行的当前任务的标记, 再将被补丁函数起始指令 处的 N条原有指令恢复成被补丁函数的长跳转指令; 在当前任务不是被标 记的任务的情况下, 则跳转至即将运行的任务。
本实施例还提供了一种动态补丁函数的装置,该装置的结构示意如图 2 所示, 包括: 恢复模块 10, 配置为根据当前运行任务的预先标记将已修改 的被补丁函数起始指令处的 N条长跳转指令恢复成被补丁函数的原有指 令,其中, N为大于等于 3的整数; 第一修改模块 12, 与恢复模块 10耦合, 配置为在当前任务退出运行的情况下, 将起始指令开始处的 N条原有指令 修改为长跳转指令, 以动态补丁函数。
图 3示出了上述装置的一种优选结构, 在图 2的基础上, 还包括: 确 定模块 14, 配置为遍历系统中所有任务, 以确定待修改型任务, 其中, 待 修改型任务为 PC指针位于被补丁函数起始指令处的 N条指令的任务, N 条指令的位置用于记录已修改的被补丁函数的长跳转指令; 标记模块 16, 与确定模块 14和恢复模块 10耦合, 配置为对待修改型任务进行标记, 以 确定当前所有任务的类型。
图 4示出了上述装置的另一种优选结构, 在图 3的基础上, 还包括: 第一判断模块 20, 配置为当要再次运行所有任务中的任务的情况下, 判断 当前要运行的任务是否被标记; 恢复模块 10, 与第一判断模块 20耦合, 还 配置为在当前要运行的任务被标记的情况下,将被补丁函数起始指令处的 N 条长跳转指令恢复成被补丁函数的原有指令。
图 5示出了上述装置的又一种优选结构, 在图 4的基础上, 还包括: 第二判断模块 22, 与标记模块 16和恢复模块 10耦合, 配置为在即将退出 当前运行的任务时, 判断当前任务是否为被标记的任务; 还配置为在当前 任务为被标记的任务的情况下,再判断该任务的 PC指针是否仍位于被补丁 函数起始指令处的 N条指令范围内; 恢复模块 10, 还配置为在 PC指针位 于 N条指令范围内的情况下, 将被补丁函数起始指令处的 N条原有指令恢 复成被补丁函数的长跳转指令; 标记模块 16, 还配置为在 PC指针不再位 于 N条指令范围内的情况下, 取消即将退出运行的当前任务的标记, 再触 发恢复模块将被补丁函数起始指令处的 N条原有指令恢复成被补丁函数的 长跳转指令; 跳转模块 24, 与第二判断模块 22耦合, 配置为在当前任务不 是被标记的任务的情况下, 则跳转至即将运行的任务。
图 6示出了上述装置的又一种优选结构, 在图 3的基础上, 还包括: 第二修改模块 30, 与标记模块 16和恢复模块 10耦合, 配置为修改被补丁 函数起始指令处的 N条原有指令修改为长跳转指令, 并备份原有指令。
本领域技术人员应当理解, 上述各处理模块均可由的应用处理器(AP, Application Processor ), 中央处理器 ( CPU, Central Processing Unit )、 数字 信号处理器( DSP, Digital Signal Processor )或可编程门阵列( FPGA, Field Programmable Gate Array )等实现。
优选实施例
针对现有技术可以看出,使用长跳转指令时, 只需要避免上述 PC指针 位于被补丁函数起始指令处的 N条指令范围内的情况即可。 本实施例提供 了一种动态补丁函数的方法, 其中, 长跳转指令为三条, 该方法能够在上 述第一种情况中任务 A再次得到调度运行时, 将已修改的被补丁函数起始 指令处的三条长跳转指令临时恢复成原有的被补丁函数的指令, 等任务 A 退出调度时再把被补丁函数起始指令开始处的三条指令改成长跳转指令。 该方法可以应用于对嵌入式系统进行动态补丁升级, 尤其是补丁函数和补 丁函数的相对地址超过短跳转地址范围的情况。
在进行动态补丁升级时,其初始化流程如图 7所示, 具体步骤如下 (步 骤 S702至步骤 S712 ):
步骤 S702, 锁中断, 禁止任务切换。
步骤 S704, 遍历系统中所有正在运行的任务, 判断任务的 PC指针是 否位于被补丁函数开头的三条指令范围内。 如果是, 则执行步骤 S706, 否 则执行步骤 S708。
步骤 S706, 对于 PC指针位于被补丁函数起始指令的三条指令处的任 务, 在其任务的任务控制块中设置一个标志 1。 这个标志 1用来标识任务得 到调度后, 运行时需要将被补丁函数起始长跳转指令恢复成原有指令。
步骤 S708, 修改被补丁函数起始指令开始的三条指令为长跳转指令, 并备份原有指令。
步骤 S710, 注册任务切换钩子函数, 这样在发生任务切换时, 系统会 调用到这个钩子函数。
步骤 S712, 开中断, 允许任务切换。
上述过程为系统中当前运行任务进行标记, 经过上述的标记, 使得对 需要恢复为原始指令的任务的区分更加方便。
当发生任务切换时, 例如即将从当前运行的任务 A切换到即将运行的 任务 B, 任务切换钩子函数的具体实现流程如图 8所示, 包括如下步骤(步 骤 S802至步骤 S816 ):
步骤 S802, 锁中断, 禁止任务切换。
步骤 S804, 判断任务 A的任务控制块中是否有标志 1。 如果是, 说明 任务 A前面运行时需要把被补丁函数起始指令处的三条指令恢复成原有指 令, 则执行步骤 S806, 否则, 说明被补丁函数起始指令处的指令为长跳转 指令, 执行步骤 S812。
步骤 S806, 判断任务 A的 PC指针是否仍然位于被补丁函数起始指令 处三条指令范围内。 如果是, 说明任务 A以后再次得到运行时, 仍然需要 恢复被补丁函数起始指令为原有被补丁函数指令, 则执行步骤 S810, 否贝 'J, 说明任务 A再次得到调度运行时无需恢复被补丁函数起始指令为原有被补 丁函数指令, 执行步骤 S808。
步骤 S808, 此时清除任务 A的任务控制块中的标志 1。
步骤 S810, 修改被补丁函数起始指令处的三条指令为长跳转指令, 并 备份原有指令。 至此, 结束运行任务 A的过程执行完毕, 接下来, 是即将 开始运行的任务 B的流程。
步骤 S812, 判断任务 B的任务控制块中是否有标志 1。 如果是, 说明 任务 B是待修改型的任务, 则执行步骤 S814, 否则, 执行步骤 S816。
步骤 S814,将被补丁函数的起始指令处的长跳转指令恢复成原有指令。 步骤 S816, 开中断, 允许任务切换。
本发明实施例还记载了一种存储介质, 所述存储介质中存储有计算机 程序, 所述计算机程序配置为执行前述实施例的动态补丁函数的方法。
尽管为示例目的, 已经公开了本发明的优选实施例, 本领域的技术人 员将意识到各种改进、 增加和取代也是可能的, 因此, 本发明的范围应当 不限于上述实施例。
工业实用性
本发明先将已修改的被补丁函数起始指令处的 N条长跳转指令恢复成 被补丁函数的原有指令,在当前任务退出运行时,再将起始指令开始处的 N 条原有指令修改为长跳转指令, 就完成了补丁函数的替换, 实现函数的动 态补丁, 解决了在被补丁函数的起始指令被修改成长跳转指令后, 修改后 的系统可能无法正常运行的问题

Claims

权利要求书
1、 一种动态补丁函数的方法, 包括:
根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的 N 条长跳转指令恢复成所述被补丁函数的原有指令, 其中, 所述 N为大于等 于 3的整数;
在当前任务退出运行时, 将所述起始指令开始处的 N条所述原有指令 修改为长跳转指令, 以动态补丁函数。
2、 如权利要求 1所述的方法, 其中, 根据当前运行任务的预先标记将 已修改的被补丁函数起始指令处的 N条长跳转指令恢复成所述被补丁函数 的原有指令之前, 还包括:
遍历系统中所有任务, 以确定待修改型任务, 其中, 所述待修改型任 务为程序计数器 PC指针位于所述被补丁函数起始指令处的 N条指令的任 务,所述 N条指令的位置用于记录已修改的所述被补丁函数的长跳转指令; 对所述待修改型任务进行标记, 以确定所述所有任务的类型。
3、 如权利要求 2所述的方法, 其中, 对所述待修改型任务进行标记之 后, 还包括:
当要再次运行所述所有任务中的任务的情况下, 判断当前要运行的任 务是否被标记;
在当前要运行的任务被标记的情况下, 将所述被补丁函数起始指令处 的 N条长跳转指令恢复成所述被补丁函数的原有指令。
4、 如权利要求 3所述的方法, 其中, 所述方法还包括:
当即将退出当前运行的任务时, 判断所述当前任务是否为被标记的任 务;
在所述当前任务为所述被标记的任务的情况下, 则再判断该任务的 PC 指针是否仍位于所述被补丁函数起始指令处的 N条指令范围内; 如果是, 则将所述被补丁函数起始指令处的 N条原有指令恢复成所述 被补丁函数的长跳转指令;
如果否, 则先取消即将退出运行的当前任务的标记, 再将所述被补丁 函数起始指令处的 N条原有指令恢复成所述被补丁函数的长跳转指令; 在所述当前任务不是所述被标记的任务的情况下, 则跳转至即将运行 的任务。
5、 如权利要求 2所述的方法, 其中, 遍历系统中所有任务以确定待修 改型任务之后, 还包括:
修改所述被补丁函数起始指令处的 N条原有指令为长跳转指令, 并备 份原有指令。
6、 一种动态补丁函数的装置, 包括:
恢复模块, 配置为根据当前运行任务的预先标记将已修改的被补丁函 数起始指令处的 N条长跳转指令恢复成所述被补丁函数的原有指令,其中, 所述 N为大于等于 3的整数;
第一修改模块, 配置为在当前任务退出运行的情况下, 将所述起始指 令开始处的 N条所述原有指令修改为长跳转指令, 以动态补丁函数。
7、 如权利要求 6所述的装置, 其中, 还包括:
确定模块, 配置为遍历系统中所有任务, 以确定待修改型任务, 其中, 所述待修改型任务为程序计数器 PC 指针位于所述被补丁函数起始指令处 的 N条指令的任务, 所述 N条指令的位置用于记录已修改的所述被补丁函 数的长跳转指令;
标记模块, 配置为对所述待修改型任务进行标记, 以确定所述所有任 务的类型。
8、 如权利要求 7所述的装置, 其中, 还包括:
第一判断模块, 配置为当要再次运行所述所有任务中的任务的情况下, 判断当前要运行的任务是否被标记;
所述恢复模块, 还配置为在当前要运行的任务被标记的情况下, 将所 述被补丁函数起始指令处的 N条长跳转指令恢复成所述被补丁函数的原有 指令。
9、 如权利要求 8所述的装置, 其中, 还包括:
第二判断模块, 配置为在即将退出当前运行的任务时, 判断所述当前 任务是否为被标记的任务; 还配置为在所述当前任务为所述被标记的任务 的情况下,再判断该任务的 PC指针是否仍位于所述被补丁函数起始指令处 的 N条指令范围内;
所述恢复模块, 还配置为在所述 PC指针位于所述 N条指令范围内的 情况下, 将所述被补丁函数起始指令处的 N条原有指令恢复成所述被补丁 函数的长跳转指令;
所述标记模块, 还配置为在所述 PC指针不再位于所述 N条指令范围 内的情况下, 取消即将退出运行的当前任务的标记, 再触发所述恢复模块 将所述被补丁函数起始指令处的 N条原有指令恢复成所述被补丁函数的长 跳转指令;
跳转模块, 配置为在所述当前任务不是所述被标记的任务的情况下, 则跳转至即将运行的任务。
10、 如权利要求 7所述的装置, 其中, 还包括:
第二修改模块, 配置为修改所述被补丁函数起始指令处的 N条原有指 令为长跳转指令, 并备份原有指令。
11、 一种存储介质, 所述存储介质中存储有计算机程序, 所述计算机 程序配置为执行权利要求 1至 5任一项所述的动态补丁函数的方法。
PCT/CN2014/080001 2013-08-29 2014-06-16 一种动态补丁函数的方法及装置、存储介质 WO2015027732A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/914,344 US9483254B2 (en) 2013-08-29 2014-06-16 Method, apparatus and storage medium for dynamically patching a function
EP14840123.5A EP3040854B1 (en) 2013-08-29 2014-06-16 Method, apparatus and storage medium for dynamically patching function
RU2016109180A RU2642362C2 (ru) 2013-08-29 2014-06-16 Способ, устройство и носитель информации для динамического внесения изменений в функцию

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310385256.4A CN104424037B (zh) 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置
CN201310385256.4 2013-08-29

Publications (1)

Publication Number Publication Date
WO2015027732A1 true WO2015027732A1 (zh) 2015-03-05

Family

ID=52585509

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/080001 WO2015027732A1 (zh) 2013-08-29 2014-06-16 一种动态补丁函数的方法及装置、存储介质

Country Status (5)

Country Link
US (1) US9483254B2 (zh)
EP (1) EP3040854B1 (zh)
CN (1) CN104424037B (zh)
RU (1) RU2642362C2 (zh)
WO (1) WO2015027732A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809018A (zh) * 2015-05-18 2015-07-29 烽火通信科技股份有限公司 一种嵌入式系统软件注入热补丁的方法及系统

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874022B (zh) * 2015-12-11 2021-06-25 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN105607937B (zh) * 2015-12-25 2019-01-18 京信通信系统(中国)有限公司 一种热补丁方法及设备
RU2695054C1 (ru) * 2018-06-18 2019-07-18 Общество с ограниченной ответственностью "Аби Продакшн" Детектирование баркодов на изображениях
CN109947414A (zh) * 2019-01-31 2019-06-28 苏州德铂思电子科技有限公司 一种基于Vxworks系统的动态钩子函数实现方法
CN110262838A (zh) * 2019-06-14 2019-09-20 深圳乐信软件技术有限公司 一种程序崩溃的处理方法、装置、终端及存储介质
WO2021142761A1 (zh) * 2020-01-17 2021-07-22 深圳市汇顶科技股份有限公司 为芯片打补丁的方法及芯片
CN113434233B (zh) * 2021-06-28 2023-10-24 青岛海尔科技有限公司 界面跳转方法、装置、存储介质及电子装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7509636B2 (en) * 2003-12-15 2009-03-24 Microsoft Corporation System and method for updating files utilizing delta compression patching
US7941653B2 (en) * 2008-12-04 2011-05-10 Analog Devices, Inc. Jump instruction having a reference to a pointer for accessing a branch address table
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
CN102156661B (zh) * 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809018A (zh) * 2015-05-18 2015-07-29 烽火通信科技股份有限公司 一种嵌入式系统软件注入热补丁的方法及系统

Also Published As

Publication number Publication date
CN104424037A (zh) 2015-03-18
CN104424037B (zh) 2018-12-14
RU2642362C2 (ru) 2018-01-24
EP3040854A1 (en) 2016-07-06
EP3040854B1 (en) 2019-05-01
RU2016109180A (ru) 2017-10-02
US20160210142A1 (en) 2016-07-21
EP3040854A4 (en) 2016-08-03
US9483254B2 (en) 2016-11-01

Similar Documents

Publication Publication Date Title
WO2015027732A1 (zh) 一种动态补丁函数的方法及装置、存储介质
EP3370151B1 (en) Recovery services for computing systems
WO2010035596A1 (ja) ファームウェア更新装置及び方法
JP2017157004A5 (zh)
WO2011104825A1 (ja) 更新方法、更新装置、および更新プログラム
TW200813838A (en) Method and apparatus for handling exceptions during binding to native code
JP2011164971A (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
WO2021142761A1 (zh) 为芯片打补丁的方法及芯片
JP2019074950A (ja) 情報処理装置、制御装置、制御方法及び制御プログラム
KR101696900B1 (ko) 임베디드 시스템의 실행코드 암호화 및 복호화장치 및 이를 이용하여 정보유출 방지기능을 가지는 임베디드 시스템
CN113678101A (zh) 信息处理装置、移动体以及信息处理方法
JP6635195B2 (ja) 情報処理装置及びアプリケーション管理方法
US10725791B2 (en) Operating system boot up optimizations
JP2003216449A (ja) パッチ処理システム
JP2007249360A (ja) ファームウェアの更新システムおよび更新方法
KR102282468B1 (ko) 네트워크 카메라 제어 장치 및 방법
JP5578255B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
EP3447640B1 (en) Operating system up boot optimizations
JP5514063B2 (ja) 2系統クライアントシステム
JP5849449B2 (ja) 情報処理装置およびその制御方法とプログラム
KR101397911B1 (ko) 역부팅시스템을 통한 단말기의 역부팅 방법
JP2010079837A (ja) プログラム更新方法及びプログラム更新装置
JP2008198152A (ja) 冗長構成を有するコンピュータシステム及びコンピュータシステムの系切り換え方法
AU2015200408B2 (en) Electronic apparatus information processing method, and program used therewith
JP5290064B2 (ja) ソフトウェア切り替え装置及びソフトウェア切り替え方法並びにそのプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14840123

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14914344

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2014840123

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014840123

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016109180

Country of ref document: RU

Kind code of ref document: A