CN1312577C - 一种实现通信过程零拷贝消息队列的方法 - Google Patents

一种实现通信过程零拷贝消息队列的方法 Download PDF

Info

Publication number
CN1312577C
CN1312577C CNB031134130A CN03113413A CN1312577C CN 1312577 C CN1312577 C CN 1312577C CN B031134130 A CNB031134130 A CN B031134130A CN 03113413 A CN03113413 A CN 03113413A CN 1312577 C CN1312577 C CN 1312577C
Authority
CN
China
Prior art keywords
message
message queue
pointer
queue
semaphore
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.)
Expired - Fee Related
Application number
CNB031134130A
Other languages
English (en)
Other versions
CN1549108A (zh
Inventor
谢鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Sannong Tesco Agel Ecommerce Ltd
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CNB031134130A priority Critical patent/CN1312577C/zh
Publication of CN1549108A publication Critical patent/CN1549108A/zh
Application granted granted Critical
Publication of CN1312577C publication Critical patent/CN1312577C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

本发明涉及一种在通信过程中,实现零拷贝消息队列的方法。零拷贝消息队列是一个由指向消息体数据的指针组成的循环缓冲区,其数据结构包括消息队列的头指针、尾指针、当前消息数目、消息队列的总的消息数目、以及互斥操作信号量、计数信号量等。本发明克服了现有操作系统消息队列中存在多次内存拷贝的缺点,以保证消息通信过程中没有内存拷贝。可广泛地应用于嵌入式操作系统。通过与VxWorks消息队列的对比测试,大大提高了通信速率,同时降低了通信过程中的内存占用,节省了宝贵的系统资源。同时由于支持多种操作系统,因此有利于构建在各种操作系统之上的应用程序的移植。

Description

一种实现通信过程零拷贝消息队列的方法
技术领域
本发明涉及一种实现在操作系统任务或线程间进行通信的方法,具体是一种在通信过程中,实现零拷贝消息队列的方法,适用于在嵌入式实时操作系统任务间,通过消息队列进行通信。
背景技术
随着世界经济进入数字新经济时代,电信技术和信息网络技术得到了前所未有的迅猛发展。通信领域从网络到业务的巨大变化推动着数据业务的持续发展,数据业务的流量在2~3年内可能超过话音业务流量。
基于数据分组交换的业务将在5~10年内覆盖整个传统电信业务。从而在单一话音业务电路交换中的信令流通信方式,变为大量数据业务数据交换中的协议流和信令流通信方式,通信量大大增加,通信速率也在增大,这就对通过操作系统传递控制流数据提出了更高的要求。
现代操作系统常常是通过消息的方式来进行任务间的通信,消息队列提供了一种高级的任务间通信机制,在嵌入式系统中有广泛的用途。但目前的操作系统提供的消息队列在进行消息通信的过程中,为了提供对任务上下文的保护,通常的做法是将发送任务私有空间的消息拷贝到系统缓冲区,再从系统缓冲区拷贝到接收任务的私有空间中,这样在消息收发过程中存在多次的消息内存拷贝,一方面大量消耗系统资源,另一方面通信效率也大大降低了。
1.在嵌入式实时操作系统VxWorks中,系统通过msgQSend()函数发送消息,通过msgQReceive()函数接收消息。一个消息的发送在接收任务等待该消息队列的情况下,要经过一次内存拷贝:发送任务的私有空间到接收任务的私有空间。而在接收任务没有等待该消息队列时,要经过二次内存拷贝:从发送任务的私有空间到系统消息队列的缓冲区;再从消息队列缓冲区到接收任务的私有空间。如果发送的消息较大,则还必须加大发送任务和接收任务的堆栈空间,否则容易造成堆栈溢出。
2.在通用操作系统如Windows NT中,系统通过PostMessage()函数发送异步消息,通过SendMessage()函数发送同步消息,通过GetMessage()或PeekMessage()接收消息。在windows程序中,当应用程序发送一个消息通知指定的窗口执行一个任务时,PostMessage()函数为该消息创建一个MSG消息结构并将该消息拷贝到消息队列中,而应用程序通过消息循环将该消息取出(从消息队列中拷贝到本地上下文),并派发到相应的窗口进行处理。可见,消息在派发过程中也存在多次内存拷贝问题。
再者,通信领域的应用程序大多是基于消息驱动,对消息队列的操作非常频繁,而目前各种操作系统提供的消息队列调用接口不一致,造成应用程序代码的移植很不方便,可读性也很差。
发明内容
本发明的目的是为了克服了现有操作系统消息队列中存在多次内存拷贝的缺点,提出了一种在通信过程中,实现零拷贝消息队列的方法,以保证消息通信过程中没有内存拷贝。本发明支持紧迫和普通两级消息,并提供了多种查询接口,通过对信号量和互斥机制的适配,可广泛地应用于嵌入式操作系统如VxWorks,pSoS,以及通用操作系统Windows NT,Linux等多种操作系统,屏蔽各种操作系统的差异。
本发明是这样实现的:
一种实现通信过程零拷贝消息队列的方法,包括如下步骤:
第一步  信号量适配:创建、获取、释放、删除一个对各种操作系统通用的信号量,包括vxworks,pSos,Windows NT,Linux等操作系统。
第二步  互斥量适配:创建、获取、释放、删除一个对各种操作系统通用的互斥量,包括vxworks,pSos,Windows NT,Linux等操作系统。
第三步  系统消息队列池初始化:系统初始化时在系统缓冲区中分配一个消息队列池创建整个消息队列的索引信息。
第四步  创建消息队列:从消息队列池中查找一个尚未分配的消息队列,返回该消息的编号,用于消息的发送和接收。
第五步  发送消息:在指定的消息队列上,发送消息数据,如果是紧迫消息,发送任务数据的指针挂接到当前消息队列的头部,如果是普通消息,将该任务数据的指针挂接到当前消息队列的尾部,最后返回成功或失败。
第六步  接收消息:在指定的消息队列上接收消息,并返回接收缓冲区的指针。如果消息队列为空:当超时参数为0,立即返回空指针;当超时参数为-1,任务进入阻塞队列永久等待;当超时参数为其它值,任务延迟一段时间并继续运行。当消息队列非空时,从消息队列头取出一消息并返回到接收缓冲区。
第七步  删除消息队列:对不用的消息队列需要删除,并释放其占用的内存。删除消息队列是创建消息队列的逆过程,通过对指定的消息队列ID号判断其是否正在使用,若没有使用,删除失败,若正在使用,则将该消息队列中的消息内存释放,清空消息个数,并设置为未用。
第八步  查询消息数:通过输入索引号获得需要查询的消息队列,并返回其中的消息数。
采用本发明所述的零拷贝消息通信的方法,通过与VxWorks消息队列的对比测试,与现有技术相比,大大提高了通信速率,同时降低了通信过程中的内存占用,节省了宝贵的系统资源。同时由于其支持多种操作系统,因此有利于构建在各种操作系统之上的应用程序的移植。
附图说明
图1给出的是VxWorks消息队列实现方式;
图2给出的是零拷贝消息队列实现原理;
图3给出的是零拷贝消息队列的实现流程;
图4给出的是创建消息队列流程;
图5给出的是发送消息流程;
图6给出的是接收消息流程;
图7给出的是删除消息队列流程。
具体实施方式
图1介绍了VxWorks消息队列实现方式,消息队列在初始化时,在系统空间里分配并初始化一个消息队列。以它能够排队的最大的消息数目以及每个消息的最大字节长度作为参数,预先分配足够的缓冲空间。当任务和ISR调用msgQSend()函数向消息队列发送消息时,如果没有任务在等待该队列中的消息,那么该消息进入消息队列的缓冲。如果有任务等待该队列的消息,那么这个消息立即提交给第一个等待的任务。当消息队列已满时,即当队列没有可用缓冲时,发送任务等待一定的超时。当超时为NO_WAIT(0),发送任务立即返回错误。当超时为WAIT_FOREVER(-1),发送任务进入阻塞任务队列。当超时为其他时,发送任务延迟一段时间再继续运行。任务调用msgQReceive()函数从消息队列接收消息。如果队列缓冲中已有可用的消息,那么第一个消息立即出队列,并返回给调用者。如果没有消息可用,调用者将阻塞,进入等待该消息的任务队列中排队。由此可见,在VxWorks中,一个消息的发送在接收任务等待该消息队列的情况下,要经过一次内存拷贝:发送任务的私有空间到接收任务的私有空间。而在接收任务没有在该消息队列等待时,要经过二次内存拷贝:从发送任务的私有空间到系统消息队列的缓冲区;再从消息队列缓冲区到接收任务的私有空间。
图2介绍了零拷贝消息队列实现原理。零拷贝消息队列是一个由指向消息体数据的指针组成的循环缓冲区,其数据结构包括消息队列的头指针、尾指针、当前消息数目、消息队列的总的消息数目、以及互斥操作信号量、计数信号量等。系统初始化时在系统缓冲区中分配一个消息队列池创建整个消息队列的索引信息。当任务创建一个用于任务间通信的消息队列时,从消息队列池中查找一个尚未分配的消息队列,返回该消息的编号,用于消息的发送和接收。消息发送时,如果是普通消息,发送任务数据的指针挂接到当前消息队列的尾部,如果是紧迫消息,则将该消息数据的指针添加到消息队列的头部。如果到达消息队列的边界,作边界指针调整。发送完毕后释放等待在该消息队列上的信号量,即计数信号量加1。接收消息时,接收任务从队列头取出第一个消息的指针,并将它返回给接收任务缓冲区,同时作适当的指针操作。若消息队列为空,接收等待该消息队列的计数信号量,即计数信号量减1。如果此时计数信号量小于0,则根据接收超时值参数进行相应的处理。由于在消息的发送和接收过程中采用了指针传递,没有进行内存拷贝。
图4介绍了创建消息队列的流程。首先初始化消息队列池,如果消息队列池已经初始化,就不再调用初始化函数。初始化完成后,从系统消息队列池中查找一个尚未使用的消息队列,如果没有找到,则返回一个非法消息队列的索引值:如果找到一个尚未使用的消息队列,则初始化该消息队列的值,包括头指针、尾指针、消息数,创建互斥信号量、创建计数信号量等。这一步操作由于是对全局数据的操作,需要用全局信号量来互斥。初始化该消息队列完成后,返回消息队列的索引。
图5介绍了发送消息流程。首先对输入参数进行效验,非法参数输出打印信息并返回发送失败。接着进入关键代码段保护:关键代码段保护可以用开关中断或用信号量来实现,通过宏开关来适配。如果是中断互斥,锁中断;如果是信号量互斥,取信号量。下一步是进行队列的指针操作:如果是紧迫消息,将该消息添加到消息队列头;如果是普通消息,将该消息添加到消息队列尾。同时消息队列中的消息数加1。操作完成后退出关键代码段保护:如果是中断互斥,打开中断锁。如果是信号量互斥,释放信号量。消息添加到消息队列后,发送任务需要释放等待在该消息队列上的计数信号量,该计数信号量加1,使阻塞任务进入就绪,并让内核运行调度核心。最后返回发送消息成功。
图6介绍了接收消息流程。首先对输入参数进行效验,如果参数非法则返回空指针。首先取得操作该消息队列的指针,然后获取计数信号量,使计数信号量减1,如果该计数信号量小于0,则调用任务将根据超时参数进行处理:当超时参数为0,立即返回空指针;当超时参数为-1,任务进入阻塞队列永久等待;当超时参数为其它值,任务延迟一段时间并继续运行。当调用任务恢复运行时,如果消息队列为空,返回空指针,否则进行核心数据操作:首先进入关键代码保护,接着进行指针操作,从消息队列头取出一消息,返回给调用者,同时消息队列中的消息数减1,取出消息后退出关键代码保护。最后返回取出的消息。
图7介绍了删除消息队列的流程。删除消息队列是创建消息队列的逆过程,首先取得操作该消息队列的指针,如果该消息队列没有使用,则返回删除错误,否则获得该消息队列的指针,将头指针、尾指针、消息数、最大消息数等值设置为0,同时删除互斥信号量、等待计数信号量,本操作需要做全局数据区的互斥。最后返回删除成功。
图3介绍了如何实现消息队列方案的流程。对前面介绍的方案的8个步骤进行了流程图实现,即信号量适配、互斥量适配、消息队列初始化、创建消息队列、发送消息、接收消息、删除消息队列、查询消息队列等。

Claims (9)

1.一种实现通信过程零拷贝消息队列的方法,包括如下步骤:
进行信号量适配:提供创建、获取、释放、删除一个对操作系统通用的信号量适配接口;
进行互斥量适配:提供创建、获取、释放、删除一个对操作系统通用的互斥量适配接口;
对系统消息队列池初始化:系统初始化时,在系统缓冲区中分配一个消息队列池,以创建整个消息队列的索引信息;
创建消息队列:从消息队列池中查找一个尚未分配的消息队列,返回该消息的编号,用于消息的发送和接收;
发送消息:将消息数据的指针添加到消息队列中;
接收消息:从消息队列头取出消息的指针,并返回接收缓冲区;
删除消息队列:对不用的消息队列需要删除,并释放其占用的内存;
查询消息数:通过输入索引号获得需要查询的消息队列,并返回其中的消息数。
2.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:
所述适配信号量及互斥量通用的操作系统包括vxworks,pSos,Windows NT,Linux。
3.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:所述发送消息:
是紧迫消息,将该消息数据的指针添加到消息队列头;
是普通消息,将该消息数据的指针添加到消息队列尾。
4.  如权利要求1所述实现零拷贝消息队列的方法,其特征在于:
所述删除消息队列用于判断指定消息队列ID号是否使用,
若没有使用,删除失败;
若正在使用,将该消息队列中的消息内存释放,清空消息个数,并设置为未用。
5.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:
所述消息队列是一个由指向消息体数据的指针组成的循环缓冲区,其数据结构包括消息队列的头指针、尾指针、当前消息数目、消息队列的总的消息数目、以及互斥操作信号量、计数信号量等。
6.如权利要求1或3所述实现零拷贝消息队列的方法,其特征在于:所述发送消息:
是普通消息,发送任务数据的指针挂接到当前消息队列的尾部;
是紧迫消息,则将该消息数据的指针添加到消息队列的头部;
到达消息队列的边界,作边界指针调整;
发送完毕后释放等待在该消息队列上的信号量,即计数信号量加1。
7.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:所述发送消息进一步包括如下步骤:
对输入参数进行效验,非法参数输出打印信息并返回发送失败,
进入关键代码段保护:利用开关中断或用信号量,通过宏开关适配,是中断互斥,锁中断;是信号量互斥,取信号量,
进行消息队列的指针操作:是紧迫消息,将该消息添加到消息队列头;是普通消息,将该消息添加到消息队列尾,同时消息队列中的消息数加1,
退出关键代码段保护:是中断互斥,打开中断锁;是信号量互斥,释放信号量,
消息添加到消息队列后,发送任务需要释放等待在该消息队列上的计数信号量,该计数信号量加1,使阻塞任务进入就绪,并让内核运行调度核心,
返回发送消息成功。
8.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:所述接收消息进一步包括如下步骤:
对输入参数进行效验,参数非法则返回空指针,
取得操作该消息队列的指针,然后获取计数信号量,使计数信号量减1,该计数信号量小于0,则调用任务将根据超时参数进行处理;超时参数为0,立即返回空指针;超时参数为-1,任务进入阻塞队列永久等待;超时参数为其它值,任务延迟一段时间并继续运行,调用任务恢复运行,
消息队列为空,返回空指针,否则进行核心数据操作:首先进入关键代码保护,接着进行指针操作,从消息队列头取出一消息,返回给调用者,同时消息队列中的消息数减1,取出消息后退出关键代码保护,
返回取出的消息。
9.如权利要求1所述实现零拷贝消息队列的方法,其特征在于:所述删除消息队列进一步包括如下步骤:
取得操作该消息队列的指针,该消息队列没有使用,则返回删除错误;否则获得该消息队列的指针,做全局数据区的互斥,将头指针、尾指针、消息数、最大消息数等值设置为0,同时删除互斥信号量、等待计数信号量;
返回删除成功。
CNB031134130A 2003-05-07 2003-05-07 一种实现通信过程零拷贝消息队列的方法 Expired - Fee Related CN1312577C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031134130A CN1312577C (zh) 2003-05-07 2003-05-07 一种实现通信过程零拷贝消息队列的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031134130A CN1312577C (zh) 2003-05-07 2003-05-07 一种实现通信过程零拷贝消息队列的方法

Publications (2)

Publication Number Publication Date
CN1549108A CN1549108A (zh) 2004-11-24
CN1312577C true CN1312577C (zh) 2007-04-25

Family

ID=34320072

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031134130A Expired - Fee Related CN1312577C (zh) 2003-05-07 2003-05-07 一种实现通信过程零拷贝消息队列的方法

Country Status (1)

Country Link
CN (1) CN1312577C (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020141B2 (en) 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
CN100464304C (zh) * 2006-08-29 2009-02-25 飞塔信息科技(北京)有限公司 一种基于Linux操作系统实现零拷贝的装置和方法
CN101146028B (zh) * 2006-09-12 2010-11-24 中兴通讯股份有限公司 一种通讯系统中的报文数据提取方法
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
CN101470623B (zh) * 2007-12-26 2011-02-16 无锡江南计算技术研究所 队列管理方法和队列管理器、队列消息的处理方法和系统
CN101470636B (zh) * 2007-12-27 2011-10-26 北京东方通科技股份有限公司 一种消息的读写方法和装置
CN101576884B (zh) * 2008-05-07 2013-03-20 中兴通讯股份有限公司 断链缓存文件管理的实现方法
CN101409715B (zh) * 2008-10-22 2012-04-18 中国科学院计算技术研究所 一种利用InfiniBand网络进行通信的方法及系统
CN101634956B (zh) * 2009-08-25 2012-08-08 华为技术有限公司 多核处理器消息调度方法及调度器
CN102902542B (zh) * 2012-09-27 2016-06-01 Tcl通力电子(惠州)有限公司 虚拟接口配置方法和装置
CN105991475B (zh) * 2015-02-27 2020-01-07 中兴通讯股份有限公司 报文接收方法、装置及中央处理器
CN106851015B (zh) * 2017-03-10 2020-09-22 Oppo广东移动通信有限公司 调整广播消息队列的方法、装置及终端
CN107247631B (zh) * 2017-07-04 2020-07-28 无锡雷华网络技术有限公司 通用的gpon-olt系统板间通信中间件系统
CN107391279B (zh) * 2017-07-31 2020-08-25 浪潮云信息技术股份公司 一种消息队列容器创建方法、装置及消息队列容器
CN110856004B (zh) * 2019-11-05 2022-02-01 北京字节跳动网络技术有限公司 消息处理方法、装置、可读存储介质及电子设备
CN111240828A (zh) * 2019-12-30 2020-06-05 苏州大学 一种嵌入式实时操作系统的同步通信系统和方法
CN111537791A (zh) * 2020-07-01 2020-08-14 杭州雷甸科技有限公司 一种基于嵌入式操作系统的智能电表
CN114168365B (zh) * 2021-12-07 2023-06-20 中国船舶重工集团公司第七0七研究所 一种基于stm32f450处理器的实时数据录取方法
CN115225525A (zh) * 2022-07-07 2022-10-21 金锐软件技术(杭州)有限公司 一种基于互联网的网络流量管理系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032267A (en) * 1995-01-23 2000-02-29 Compaq Computer Corporation Apparatus and method for efficient modularity in a parallel, fault tolerant, message based operating system
CN1334936A (zh) * 1998-11-30 2002-02-06 英特尔公司 为不同的指令集结构所编写的固件之间进行通信的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032267A (en) * 1995-01-23 2000-02-29 Compaq Computer Corporation Apparatus and method for efficient modularity in a parallel, fault tolerant, message based operating system
CN1334936A (zh) * 1998-11-30 2002-02-06 英特尔公司 为不同的指令集结构所编写的固件之间进行通信的方法

Also Published As

Publication number Publication date
CN1549108A (zh) 2004-11-24

Similar Documents

Publication Publication Date Title
CN1312577C (zh) 一种实现通信过程零拷贝消息队列的方法
US20100122268A1 (en) Communicator-based token/buffer management for eager protocol support in collective communication operations
EP0798638B1 (en) Periodic process scheduling method
CN103210619B (zh) 用于电信网络应用的无锁和零拷贝消息传送方案
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
CN101141742B (zh) 一种终端的应用通信方法
JPH04167040A (ja) ネットワーク通信システム
CN112698959A (zh) 一种多核通信方法和装置
CN1270732A (zh) 计算机
CN109981235B (zh) 一种FlexE Group协商方法及网元
US4575844A (en) Digital switching system
Banikazemi et al. MPI-LAPI: an efficient implementation of MPI for IBM RS/6000 SP systems
US20030018807A1 (en) Method and apparatus for processing data in a multi-processor environment
JPH0471377B2 (zh)
US11516145B2 (en) Packet control method, flow table update method, and node device
JPH07295840A (ja) マルチプログラミングにおける事象管理方式
CN110730130B (zh) 报文发送方法、装置、网络设备及存储介质
CN101542985A (zh) 分组交换装置及方法
CN113553279A (zh) 一种rdma通信加速集合通信的方法及系统
Hertweck et al. X25 based process—process communication
CN100405860C (zh) 全球移动通信系统手机实现精确计时的方法
RU2140132C1 (ru) Способ двухтактной ассоциативной маршрутизации
JP6835758B2 (ja) フロー制御装置および方法
CN1022078C (zh) 分布式计算机网络的组网方法及计算机网络卡
Walther et al. Using preemption in event driven systems with a single stack

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20181017

Address after: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

Address before: 518057 Department of law, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen

Patentee before: ZTE Corporation

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181107

Address after: 221300 room 103, student Pioneer Park, Pizhou, Xuzhou, Jiangsu

Patentee after: Jiangsu Sannong Tesco Agel Ecommerce Ltd

Address before: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070425

Termination date: 20180507

CF01 Termination of patent right due to non-payment of annual fee