CN105094870A - 64位Linux操作系统兼容32位应用软件的方法 - Google Patents
64位Linux操作系统兼容32位应用软件的方法 Download PDFInfo
- Publication number
- CN105094870A CN105094870A CN201410202125.2A CN201410202125A CN105094870A CN 105094870 A CN105094870 A CN 105094870A CN 201410202125 A CN201410202125 A CN 201410202125A CN 105094870 A CN105094870 A CN 105094870A
- Authority
- CN
- China
- Prior art keywords
- bit
- application program
- application
- program
- runtime library
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种在64位Linux操作系统兼容32位应用软件的方法,通过在龙芯平台64位操作系统内核中设计一32位子系统,对需要运行的程序进行判断进行选择相对应的系统调用,或者通过指针长度判断应用程序格式,进一步选择与程序相对应的系统,调用与该程序位数相对应的加载器、链接器以及运行库进行执行。本发明的有益效果为:使一些在短时间内无法在龙芯64位Linux操作系统如Linux平台上部署的应用程序,或是从32位Linux操作系统向64位迁移比较繁琐、甚至一些不适合64位平台的应用程序,完全运行在64位Linux操作系统中的32位子兼容子系统,从而保证了资源利用率以及运行效率,提高了系统的兼容性以及可应用程序的数量,从而推动了普及64位Linux操作系统的应用。
Description
技术领域
本发明属于计算机软件领域,尤其涉及一种能够在64位Linux操作系统中兼容32位应用软件的方法。
背景技术
在同一个Linux操作系统中,如Windows、Linux、Unix等操作系统中,通常存在32位和64位两个版本,32位计算机Linux操作系统由来已久,为技术日益成熟的过程中发展起很多让人所熟知并且应用的应用程序,然而64位系统更能满足需要大量内存和浮点性能的客户,并且在机械设计与分析、三维动画、视频编辑和创作以及科学计算和高性能计算等领域大放光芒,64位Linux操作系统比32位Linux操作系统有着更大的寻址能力和数据处理能力,因此64操作位系统在大数据处理和复杂计算方面有着天然的优势,同时得到了越来越多的用户的认可与好评。
基于服务器Linux操作系统运行环境和所需要提供的服务类型,在服务器领域64位Linux操作系统淘汰32位Linux操作系统已经成为必然趋势,然而在计算机发展史中,32位Linux操作系统作为主流的系统版本已经相当长的时间,然而当前的64位操作系统为龙芯平台64位Linux操作系统架构图,如图1所示,对32位软件并不兼容,而在软件从32位过渡到64位的这该段时间内,32位Linux操作系统上出现了大量与之相匹配的软件,这些软件在在短时间内向64位Linux操作系统迁移暂时无法实现与完成,而且客户可能对这些32位软件有特殊的需求而不愿做出改变,这就对64位Linux操作系统对32位应用程序的兼容性提出了新的要求,即可以在64位Linux操作系统完全取代32位之间的过渡时间段内,在这样一个相当长的时间段内,使64位Linux操作系统保持对32位Linux操作系统的兼容特性,而目前还没有解决这些问题的产品或者方法出现。
发明内容
针对现有技术中存在的不足,本发明的目的在于提供一种64位Linux操作系统兼容32位应用软件的方法,64位Linux操作系统装入32位子Linux系统,从而使32位程序能够完全应用在64位Linux操作系统中,从而提高了64位Linux操作系统的资源利用率以及运行效率,完全实现了对32位应用程序的兼容。
本发明的技术方案如下:
一种64位Linux操作系统下兼容32位应用软件的方法,包括以下步骤:
步骤S1:于所述64位处理器对应地设有64位操作系统,在所述64位操作系统的内核中设计一32位系统调用接口,与该系统调用接口对应的32位运行库、链接器以及程序加载器均设计于该64位操作系统中,所述32位运行库、链接器、程序加载器以及32位系统调用接口共同形成32位子操作系统;
步骤S2:对运行的应用程序进行判断,并选择与程序相对应的操作系统,调用与该程序位数相对应的加载器、链接器以及运行库进行执行。
上述的方法,进一步地,还包括判断步骤:
声明一个指针判断,对运行的应用程序格式进行判断:
(1)若判断结果是32位应用程序,则调用32位子操作系统中的32位加载器来装载该应用程序;
(2)若判断结果是64位应用程序,则调用64位Linux操作系统中的64位加载器来装载该应用程序。
基于本发明又一方面在64位Linux操作系统中兼容32位应用软件的方法,进一步地,还包括判断步骤:
在所述操作系统的内核上一层为虚拟系统调用中间层,用于识别32位与64位应用程序;
获取-运行的应用程序所属的系统调用的格式,由该中间层对该格式进行判断,若判断为32位系统调用,则对该系统调用的数据结构进行转换,进而执行该系统调用;
若判断为64位系统调用,则直接执行该系统调用。
上述的方法,所述应用程序在装载应用结束后,根据该应用程序在编译时标定的运行库位置来装载该应用程序所对应的运行库。
上述的方法,应用程序装载结束以后,32位应用程序的装载器调用32位动态链接器来完成内存中的应用程序与运行库的链接工作,64位应用程序的装载器调用64位动态链接器完成内存中的应用程序与所属运行库的链接工作。
上述的方法,所述操作系统采用龙芯64位处理器。
上述的方法,所述操作系统调用虚拟系统调用中间层以上的运行库、装载器、链接器均为两份,其中一份为32位,另一份为64位。
上述的方法,所述运行库具有标准接口定义,由运行库中的函数间接地使用系统调用。
上述的方法,所述内存为内核的一个组成部分,应用程序执行时,首先装载形成应用程序的内存镜像以及运行库的内存镜像,然后由链接器链接内存镜像中的应用程序以及运行库镜像,同时加载共享库到内存中,之后执行编写的代码执行。
本发明的有益效果是:
(1)能够保证一些在短时间内无法在龙芯64位Linux操作系统如Linux平台上部署,或是从32位Linux操作系统向64位迁移比较繁琐,甚至一些不适合64位平台的应用程序,完全运行在64位Linux操作系统中的32位子兼容子系统,从而保证了资源利用率以及运行效率;
(2)提高了系统的兼容性以及可应用程序的数量,从而推动了普及64位Linux操作系统的应用;
(3)64位Linux操作系统能够自动识别应用程序所属种类并且选择让该应用程序在相应的Linux操作系统中运行,做到了64位Linux操作系统和32位Linux操作系统的无缝切换;
(4)64位Linux操作系统的内核能够同时接受并执行64位Linux操作系统以及32位子Linux操作系统的调用;
(5)64位Linux操作系统的龙芯64位处理器作为新兴发展起来的处理器,能够兼容32位指令和兼容32位数据结构,这也是先决条件之一。
附图说明
图1为现有的龙芯平台64位Linux操作系统架构图。
图2为龙芯平台附带32位子系统的64位Linux操作系统架构图。
图3为龙芯平台64位Linux操作系统中32位和64位应用程序执行流程图。
图4为龙芯平台64位Linux操作系统系统调用内核执行流程图。
具体实施方式
实施例1
本发明实施例所述的一种64位操作系统下兼容32位应用软件的方法,能够让64位操作系统同时运行64位程序与32位应用程序,在运行应用程序时,操作系统变换系统调用或者声明一个函数来识别出应用程序为64位应用程序还是32位应用程序,进而选择在64位操作系统还是32位操作子系统中运行。
在正常系统启动和执行64位应用程序过程当中,32位子Linux系统并不产生作用,只有当系统需要运行32位程序的时候,32位程序将被子Linux系统当中的32位链接器和加载器,加载到内存,并由32位系统库提供功能调用支撑。
64位Linux操作系统装入32位子Linux系统,所述32位子Linux系统包括32位链接库,32位加载器,32位运行库,以及32位系统调用接口。
如图2、图3所示,其中图3中的黑色实心箭头表示应用程序被装载的过程,带有箭尾的空心箭头表示运行库被装载的过程,首先,步骤S1的前提是采用龙芯平台的64位处理器,或者是其它能够兼容32位指令的64位处理器,这是执行本发明所述方法的先决条件。
修改龙芯平台64位Linux操作系统的内核,在内核当中添加中间层,中间层用来识别出32位系统调用与64位系统调用,如果是64位系统调用则正常执行,如果是32位系统调用,则需要首先被路由到内核当中提供兼容性的函数,由提供兼容性的函数进行相应转换,将系统调用当中32位数据结构转换为64相应的位数据结构,然后再将转换后的32位系统调用路由到64位系统调用进行处理。
如图4所示,32位程序进行系统调用时,系统调用穿过32位运行库,最终抵达内核,内核判断调用类型,如果是64位程序的系统调用,则正常执行内核当中的系统调用程序。如果是32位程序的系统调用则需要将调用路由到处理相关处理函数,处理函数负责将32位系统调用当中的数据结构转换为64位模式,再执行内核当中的系统调用程序。
在该64位处理器中装入一64位Linux操作系统,该64位Linux操作系统内核兼容32位系统调用,该内核能够同时执行并调用64位或者32位的系统调用。
当该64位Linux操作系统中加入了32位兼容子系统以后,架构由图1变为了图2,操作系统内核以上各应用层,从系统调用中间层以上均为两份程序,其中一份用于支持64位程序运行,另一份用来支持32位程序运行。
在兼容32位指令的64位处理器的前提下进行步骤S1,在所述64位处理器对应地设有64位操作系统,在所述64位操作系统中设计一32位系统调用接口,与该系统调用接口对应的32位运行库、链接器以及程序加载器均设计于该处理器中,所述32位运行库、链接器、程序加载器以及32位系统调用接口共同形成32位子操作系统。
分别编译得到32位与64位两套运行库,一般为C语言运行库,由于32位与64位相同功能的运行库的文件名称相同,所以32位和64位的运行库放于不同的文件夹,方便应用程序运行的时候链接使用,具体地,在应用时将32位运行库安装到操作系统当中的/usr/lib和/lib目录下,将64位运行库放在/usr/lib64和/lib64目录下。
所述运行库具有标准接口定义,由运行库中的函数间接地使用系统调用。
接下来以步骤S2进行判断,分别编译得到32位链接器、64位链接器和32位装载器、64位装载器,32位和64位的链接器以及装载器分别有相同的名字,需要将32位链接器和32位装载器放置到/lib目录下,将64位链接器和64位装载器放到/lib64目录下。
执行系统调用的另一种方法是,添加一个判断,对-运行的应用程序格式进行判断:
(1)if(sizeof(long*)==4)32bit,由条件得出判断结果,即判断结果是32位应用程序,则调用32位子操作系统中的32位加载器来装载该应用程序;
(2)if(sizeof(long*)==8)64bit,由条件得出判断结果,即判断结果是64位应用程序,则调用64位Linux操作系统中的64位加载器来装载该应用程序。
系统调用的工作过程为:当用户发送一个系统调用的请求时,该系统调用用一个标准的C语言运行库的封装例程来引导,在封装例程中含有汇编指令代码:
movev0,s0
syscall
该movev0,s0将系统调用号载入v0寄存器,并执行汇编指令syscall使用该系统调用进入内核:handle_sys(),由handle_sys()找到指定的系统调用函数,该系统调用被执行,并返回执行结果。
在64位Linux操作系统中,在启用32位程序时仍然会使用syscall实现系统调用,在内核当中则需要将32位和64位系统调用分开处理,64位系统调用直接执行系统调用所指向的内核函数,而32位系统调用则需先进行处理,转化为64位调用,在执行行系统调用所指向的内核函数,即32位系统调用转化后再实现系统调用并执行。
运行库是程序在运行时所需要的库文件,通常运行库是以ELF文件形式提供的,运行库一般包括编程时常用的函数,如字符串操作、文件操作、界面等内容。其为一个经过封装的程序模块,对外提供接口,只要知道接口参数就可以自由使用,如果不使用运行库,则程序中会有很多的重复代码,而使用运行库以后,则可以大大缩小编译后的程序的大小,如果在Linux操作系统中找不到相应的运行库程序就无法运行,
具体使用时,一个编译链接好的C程序,在Linux上执行的过程如下:exec会使用BRK()函数设置当前的数据段,然后打开预告编译时指定好的共享库的文件,并且把共享库加载到内存中,因为程序在编译的时候,默认是使用共享库的方式,只有加载了共享库到内存,才能保证程序执行的正确性,最后执行编写的代码执行,共享库即动态库。共享库是Linux系统最广泛的一种程序使用方式。
它的工作原理是相同功能的代码可以被多个程序共同使用,在程序加载的时候,内核会检查程序使用到的动态库是否已经加载到内存,如果没有被加载到内存,则从系统库路径搜索并且加载相关的动态库;如果动态库已经被加载到内存,程序可以直接使用而无须加载,使用动态库可以减小应用程序占用的空间和加载时间。
在本实施例中,系统调用接口是Linux操作系统内核与上层应用程序进行交互通信的唯一接口。从对中断机制的说明可知,用户程序通过直接或间接(通过库函数)调用syscall汇编指令,并在v0寄存器中指定系统调用功能号,即可使用内核资源,包括系统硬件资源。不过通常应用程序都是使用具有标准接口定义的C函数库中的函数间接地使用内核的系统调用。
经过实测,龙芯平台附带32位子系统的64位Linux操作系统无论是在应用32位程序还是64位程序以及在多线程的控制下,系统均能够流畅运行,真正实现了不同位数的应用程序对应不同的系统调用而不影响系统的稳定性,通过简单的方法就可以让32位软件完全适应64位系统,对64位系统的普及起到了重要的推动作用。
上述实施例仅仅是为清楚地说明本发明创造所作的举例,而并非对本发明创造具体实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所引伸出的任何显而易见的变化或变动仍处于本发明创造权利要求的保护范围之中。
Claims (9)
1.一种64位Linux操作系统兼容32位应用软件的方法,其特征在于,包括以下步骤:
步骤S1:于所述64位处理器对应地设有64位操作系统,在所述64位操作系统的内核中设计一32位系统调用接口,与该系统调用接口对应的32位运行库、链接器以及程序加载器均设计于该64位操作系统中,所述32位运行库、链接器、程序加载器以及32位系统调用接口共同形成32位子操作系统;
步骤S2:对运行的应用程序进行判断,并选择与程序相对应的操作系统,调用与该程序位数相对应的加载器、链接器以及运行库进行执行。
2.如权利要求1所述的方法,其特征在于,进一步地,还包括判断步骤:
声明一个指针判断,对运行的应用程序格式进行判断:
(1)若判断结果是32位应用程序,则调用32位子操作系统中的32位加载器来装载该应用程序;
(2)若判断结果是64位应用程序,则调用64位Linux操作系统中的64位加载器来装载该应用程序。
3.如权利要求1所述的方法,其特征在于,进一步地,还包括判断步骤:
在所述操作系统的内核上一层为虚拟系统调用中间层,用于识别32位与64位应用程序;
获取运行的应用程序所属的系统调用的格式,由该中间层对该格式进行判断,若判断为32位系统调用,则对该系统调用的数据结构进行转换,进而执行该系统调用;
若判断为64位系统调用,则直接执行该系统调用。
4.如权利要求2或3所述的方法,其特征在于,所述应用程序在装载应用结束后,根据该应用程序在编译时标定的运行库位置来装载该应用程序所对应的运行库。
5.如权利要求2或3所述的方法,其特征在于,应用程序装载结束以后,32位应用程序的装载器调用32位动态链接器来完成内存中的应用程序与运行库的链接工作,64位应用程序的装载器调用64位动态链接器完成内存中的应用程序与所属运行库的链接工作。
6.如权利要求1所述的方法,其特征在于,所述操作系统采用龙芯64位处理器。
7.如权利要求3所述的方法,其特征在于,所述操作虚拟系统调用中间层以上的运行库、装载器、链接器均为两份,其中一份为32位,另一份为64位。
8.如权利要求7所述的方法,其特征在于,所述运行库具有标准接口定义,由运行库中的函数间接地使用系统调用。
9.如权利要求5所述的方法,其特征在于,所述内存为内核的一个组成部分,应用程序执行时,首先装载形成应用程序的内存镜像以及运行库的内存镜像,然后由链接器链接内存镜像中的应用程序以及运行库镜像,同时加载共享库到内存中,之后执行编写的代码执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410202125.2A CN105094870A (zh) | 2014-05-13 | 2014-05-13 | 64位Linux操作系统兼容32位应用软件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410202125.2A CN105094870A (zh) | 2014-05-13 | 2014-05-13 | 64位Linux操作系统兼容32位应用软件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105094870A true CN105094870A (zh) | 2015-11-25 |
Family
ID=54575393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410202125.2A Pending CN105094870A (zh) | 2014-05-13 | 2014-05-13 | 64位Linux操作系统兼容32位应用软件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094870A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055352A (zh) * | 2016-05-20 | 2016-10-26 | 努比亚技术有限公司 | 移动终端及应用程序运行位数的确定方法 |
CN107885529A (zh) * | 2017-10-26 | 2018-04-06 | 北京奇虎科技有限公司 | 终端应用的挂钩方法及装置 |
CN109889875A (zh) * | 2019-01-23 | 2019-06-14 | 北京奇艺世纪科技有限公司 | 通信方法、装置、终端设备和计算机可读介质 |
CN110520842A (zh) * | 2017-03-31 | 2019-11-29 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分 |
CN112835788A (zh) * | 2021-01-13 | 2021-05-25 | 哈尔滨工程大学 | 一种评估Linux应用程序与操作系统兼容性的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423773A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 于处理器中建立的操作模式 |
US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
CN1716226A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 使64位处理器兼容32位桥接芯片的系统及转换装置 |
CN1716203A (zh) * | 2004-06-30 | 2006-01-04 | 微软公司 | 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法 |
CN103218231A (zh) * | 2013-04-23 | 2013-07-24 | 浪潮集团山东通用软件有限公司 | 一种解决x64位操作系统环境访问32位控件的通用方法 |
-
2014
- 2014-05-13 CN CN201410202125.2A patent/CN105094870A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423773A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 于处理器中建立的操作模式 |
US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
CN1716226A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 使64位处理器兼容32位桥接芯片的系统及转换装置 |
CN1716203A (zh) * | 2004-06-30 | 2006-01-04 | 微软公司 | 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法 |
CN103218231A (zh) * | 2013-04-23 | 2013-07-24 | 浪潮集团山东通用软件有限公司 | 一种解决x64位操作系统环境访问32位控件的通用方法 |
Non-Patent Citations (1)
Title |
---|
BOMB250: "linux的64位操作系统对32位程序的兼容", 《HTTP://BLOG.CSDN.NET/DOG250/ARTICLE/DETAILS/6221831》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055352A (zh) * | 2016-05-20 | 2016-10-26 | 努比亚技术有限公司 | 移动终端及应用程序运行位数的确定方法 |
CN106055352B (zh) * | 2016-05-20 | 2019-08-27 | 努比亚技术有限公司 | 移动终端及应用程序运行位数的确定方法 |
CN110520842A (zh) * | 2017-03-31 | 2019-11-29 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分 |
CN110520842B (zh) * | 2017-03-31 | 2022-09-13 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分系统及方法 |
CN107885529A (zh) * | 2017-10-26 | 2018-04-06 | 北京奇虎科技有限公司 | 终端应用的挂钩方法及装置 |
CN107885529B (zh) * | 2017-10-26 | 2021-06-22 | 北京奇虎科技有限公司 | 终端应用的挂钩方法及装置 |
CN109889875A (zh) * | 2019-01-23 | 2019-06-14 | 北京奇艺世纪科技有限公司 | 通信方法、装置、终端设备和计算机可读介质 |
CN109889875B (zh) * | 2019-01-23 | 2021-07-16 | 北京奇艺世纪科技有限公司 | 通信方法、装置、终端设备和计算机可读介质 |
CN112835788A (zh) * | 2021-01-13 | 2021-05-25 | 哈尔滨工程大学 | 一种评估Linux应用程序与操作系统兼容性的方法 |
CN112835788B (zh) * | 2021-01-13 | 2023-10-27 | 哈尔滨工程大学 | 一种评估Linux应用程序与操作系统兼容性的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Serverless computing: state-of-the-art, challenges and opportunities | |
Huang et al. | Programming and runtime support to blaze FPGA accelerator deployment at datacenter scale | |
EP3030969B1 (en) | Automated application test system | |
CN101271401B (zh) | 一种具备单一系统映像的服务器机群系统 | |
CN102576314B (zh) | 具有横跨多个处理器的数据并行线程之映射处理逻辑 | |
US8863096B1 (en) | Parallel symbolic execution on cluster of commodity hardware | |
JP2006018814A (ja) | 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法 | |
CN102087609B (zh) | 多处理器平台下的动态二进制翻译方法 | |
CN105190550A (zh) | 用于启动具有多个中央处理器的计算机系统的方法 | |
CN105094870A (zh) | 64位Linux操作系统兼容32位应用软件的方法 | |
US11250193B1 (en) | Productivity platform using system-on-chip with programmable circuitry | |
US8429394B1 (en) | Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules | |
Meloni et al. | System adaptivity and fault-tolerance in NoC-based MPSoCs: the MADNESS project approach | |
CN101777007A (zh) | 片上多核处理器的并行功能仿真系统及其方法 | |
CN113672342A (zh) | 嵌入式虚拟化系统及构建、测试方法、终端及介质 | |
US10169193B2 (en) | Common debug scripting framework for driving hybrid applications consisting of compiled languages and interpreted languages | |
He et al. | Preparing NERSC users for Cori, a Cray XC40 system with Intel many integrated cores | |
Wozniak et al. | MPI jobs within MPI jobs: A practical way of enabling task-level fault-tolerance in HPC workflows | |
Baum et al. | Making full use of emerging ARM-based heterogeneous multicore SoCs | |
CN103019774A (zh) | 一种dsp处理器的动态重载方法 | |
CN117573338A (zh) | 一种资源分配方法、装置及电子设备 | |
CN116483643A (zh) | 一种gpu调试方法、装置、设备及存储介质 | |
CN112965895A (zh) | 桌面应用程序自动化测试方法、装置、设备及存储介质 | |
US10474610B1 (en) | Hardware trace and introspection for productivity platform using a system-on-chip | |
US8713545B2 (en) | Architecture for accelerated computer processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151125 |
|
RJ01 | Rejection of invention patent application after publication |