CN106227656A - A kind of data contention sample detecting method based on hardware and thread-local sequential - Google Patents

A kind of data contention sample detecting method based on hardware and thread-local sequential Download PDF

Info

Publication number
CN106227656A
CN106227656A CN201610565161.4A CN201610565161A CN106227656A CN 106227656 A CN106227656 A CN 106227656A CN 201610565161 A CN201610565161 A CN 201610565161A CN 106227656 A CN106227656 A CN 106227656A
Authority
CN
China
Prior art keywords
breakpoint
thread
hardware
sequential
instruction
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.)
Granted
Application number
CN201610565161.4A
Other languages
Chinese (zh)
Other versions
CN106227656B (en
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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201610565161.4A priority Critical patent/CN106227656B/en
Publication of CN106227656A publication Critical patent/CN106227656A/en
Application granted granted Critical
Publication of CN106227656B publication Critical patent/CN106227656B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The present invention relates to a kind of data contention sample detecting method based on hardware and thread-local sequential, belong to software test field and software reliability field, step includes: randomly choose internal storage access instruction by given sample rate, these are instructed pitching pile;And identify synchronization statements, and each thread is arranged a local sequential, this sequential increases along with the execution of synchronization statements;When program is run, if certain pitching pile is run, then an internal memory (read and write or write) breakpoint is set and records the local sequential of current thread on the memory address that correspondence instruction is to be accessed;If an internal memory breakpoint is triggered by another thread, and the local sequential arranging the thread of breakpoint does not changes, then a data contention detected.The method of the present invention, based on Hardware Breakpoint and thread-local sequential, is compared with the simple method using Hardware Breakpoint or thread sequential, and under smaller internal storage access sample rate, time overhead is less, and the effectiveness of data contention detection is higher.

Description

A kind of data contention sample detecting method based on hardware and thread-local sequential
Technical field
The invention belongs to software testing technology field and software reliability field, competing particularly to data in multithread programs The sample detecting method striven.
Background technology
Along with being widely used of multi-core CPU, increasing software employs multithreading and processes concomitantly necessarily Task.But, multithread programs needs each thread to synchronize certain task well in running.When these When mistake occurs in synchronization between thread, may result in the generation of concurrent defect, data contention (Data Race) is exactly most basic A kind of concurrent defect.
The definition of data contention is: same variable is operated (reading or writing) by two or more threads simultaneously, and at least Comprise a write operation.The dynamically detection of data contention depends on several factors, including alternately holding between test case, thread Row, program and mutual, the program of system and user's is mutual etc..Therefore, the data contention in a program is difficult at limited number of time The operation of number detects.Dynamically detect incomplete problem in order to overcome data contention, the method for sampling of data contention by Gradually it is taken seriously.The method of sampling is mainly used in two class scenes: during programmer's test program and program dispose after client When member runs program.The former mainly reduces the time overhead during dynamically detection, and the latter mainly detect those The data contention that test phase is not detected.Because this latter is higher to the requirement of time overhead.
But, currently mainly there are two kinds of data contention sample detecting methods for family client: based on tradition Happens- The method of before and the method depending on hardware (instruction breakpoint and internal memory breakpoint).The former is since it is desired that safeguard basic Happens-before relation, even if sample rate is 0% when, its time overhead caused also is the biggest (typically to have 30%), be not suitable for being deployed in client;The latter is then during sampling every time to need current thread to suspend a period of time, waits Relating to another internal storage access in data contention, the waiting time the most directly causes extra time overhead.Therefore, based on The method of hardware, can only can be deployed to client sample rate is extremely low when, and in this case, the data that can detect Competition quantity is the most considerably less.
Summary of the invention
The technology of the present invention solves problem: overcome the deficiencies in the prior art, it is provided that a kind of based on hardware and thread-local sequential The data contention method of sampling so that sample rate is when 1%, and average time, expense was about 5%, and data contention detection is effective Property will not reduce.
The technology of the present invention solution: use instruction breakpoint and the internal memory breakpoint of hardware supported, and combine this locality of thread Sequential reaches the detection of data contention;And by controlling the sample rate to instruction so that in the case of time overhead is the least, Data contention also can be detected.The present invention comprises the following steps:
(1) preset sequence P and sample rate r (0% < r < 100%), according to r to all instruction samplings in P, uses Set is designated as S.And every instruction in S is arranged instruction breakpoint (these breakpoints can also be offered at program motion time and put).
(2) simultaneously operating in recognizer P, and to one function call of each simultaneously operating pitching pile.
(3) program is run, and according to following different situations employing different operating:
If A. instruction breakpoint triggers, then obtain that this correspondence instructs as properties: internal storage access address information Addr, if be write operation isWrite, and size size of accessed internal memory.Arrange big afterwards at internal memory addr The little internal memory breakpoint for size: if isWrite is true, then read/write memory breakpoint (i.e. setDataBreakpointRW is set (addr,size));The most only arrange and write internal memory breakpoint (i.e. setDataBreakpointW (addr, size)).Record is worked as simultaneously Front thread (is designated as t1) local timing values (be designated as t1.preClock), and starting a timer, timer periods can be given Fixed.
If B. certain internal memory breakpoint is by thread t2Trigger, thread t before obtaining the most immediately1Current local sequential (is designated as t1.curClock), if t1≠t2And t1.preClock=t1.curClock, then on internal memory addr, detect that data are competing Strive.Cancel this breakpoint simultaneously.
If C. when intervalometer triggers, the internal memory breakpoint on addr is not triggered, then cancel this breakpoint.
If D. certain simultaneously operating is performed, then in the function being inserted into, the local sequential of current thread is added 1.
If E. program performs exit instruction, then empty all of internal memory breakpoint, quit a program.
In described step (1), the sampling to instruction, both can complete before program is run, it is also possible to ran in program Journey is dynamically carried out.
In described step (1), for the most sampled instruction, when arranging breakpoint, both can realize with the form of pitching pile, Software breakpoint or Hardware Breakpoint can also be used to realize.
In described step (2), to synchronization statements pitching pile, it is possible to use function is replaced or function rewrites and realizes.
Local sequential in described step (3), it is possible to use complete Happens-before realizes.
Present invention advantage compared with prior art is:
(1) Hardware Breakpoint is combined so that the time overhead that the sample detecting method of data contention causes is the least;It addition, Owing to considering the sequential of cross-thread rather than suspending thread a period of time so that time overhead reduces further, and data are competing The effectiveness striving detection increases (more data contention i.e. can be detected).
(2) present invention utilizes the local sequential of Hardware Breakpoint and thread, and the simple data contention using hardware uses Detection method is compared, and is possible not only to only cause little time overhead (Time under smaller internal storage access sample rate Overhead), and its data contention detection effectiveness higher.In an experiment, when sample rate is 1%, the side of this invention Method only causes the time overhead of average out to 5%, and the data contention detected in the experiment of 1000 times is significantly larger than single The method of pure use hardware sampling.
Accompanying drawing explanation
Fig. 1 is the flowchart of the present invention;Two of which set setDataBreakpointRW (addr, size) and SetDataBreakpointR (addr, size) represents respectively: arranges the read-write that size is size at memory address addr and breaks Put and write breakpoint;
Fig. 2 is an example containing data contention;
Fig. 3 is to use the present invention to the example by sample detecting of the data contention in Fig. 2;
Fig. 4 is the present invention a kind of realization for java applet on JikesRVM based on JikesRVM;
Fig. 5 is present invention expense figure average time in an experiment.
Detailed description of the invention
As it is shown in figure 1, step of the present invention includes: choose the instruction of needs sampling and these instructions are arranged instruction breakpoint, The local sequential simultaneously initializing each thread is 1.If certain instruction breakpoint triggers when program is run, need to visit in this instruction The memory address asked arranges internal memory breakpoint, and records the local sequential of current thread.If certain internal memory breakpoint is triggered, then judge This time internal storage access whether with corresponding instruction breakpoint at internal storage access constitute data contention, the most satisfied: different threads To the access of same address and when the latter's (i.e. internal memory breakpoint) triggers during the former (arranging the thread of internal memory breakpoint) local Sequence does not the most change.And the local sequential of each thread increased it performs synchronization statements when.It addition, it is each The effect duration of internal memory breakpoint is a time period set, if this internal memory breakpoint does not trigger within the time period, then cancels this interior Deposit breakpoint.
It is as follows that the present invention implements step:
(1) preset sequence P (as shown in Figure 2) and sample rate r (0% < r < 100%), according to r to all fingers in P Order sampling, it is assumed that thread t in figure 31The write operation of x is sampled (being denoted as sample (x)).And it is disconnected that this instruction arranges instruction Point.
In Fig. 2, there are two thread t1And t2, two threads take lock l and k (i.e. acquire (l) and acquire respectively (k)), afterwards, thread t1Variable x is carried out write operation, discharges operation (i.e. release (k)) afterwards;And thread t2Releasing To x just add operation after lock k (i.e. release (k)).Owing to two threads are can be to the operation of shared variable x simultaneously Carry out, so there being individual data contention on variable x.
Simultaneously operating in recognizer P, including acquire (...) and release (...), and inserts each simultaneously operating One function call onSync () of stake.Assume originally thread t1And t2Local sequential (clock) be 10 and 8, as it is shown on figure 3, Acquire (...) and release (...) is synchronization statements, and onSync () is the pitching pile function to synchronization statements, and sample (x) is right Variable x carries out the internal memory breakpoint sampling and arranging on x;
(2) program is run, and according to following different situations employing different operating:
A. thread t1Performing acquire (l) when, onSync () is called, and its local sequential becomes 11 from 10.
B. thread t2Performing acquire (k) when, onSync () is called, and its local sequential becomes 9 from 8.
C. thread t1When performing x=input (), instruction breakpoint thereon is triggered, record thread t1Sequential at this moment It is 11, and memory read-write breakpoint is set on x, and start timer.
D. thread t2The when of performing release (k), onSync () is called, and its local sequential becomes 10 from 9.
E. thread t2Performing x+=input when, the internal memory breakpoint trigger on x, now, due to thread t1Time Sequence or 11, and t1≠t2, then the data contention on report x.
F. thread t1When performing release (l), onSync () is called, and its local sequential becomes 12 from 11, and program is run Terminate.
The present invention passes through instruction breakpoint and internal memory breakpoint, and combines the local sequential of each thread in program, carrys out hits According to the generation of competition, it can detect the data contention in program in the case of causing the least time overhead.
Note: owing to the operation of multithreading has uncertainty, in Fig. 3, the data contention on variable x is the most every time Detect, including a lot of existing data contention detection methods.
Validity check:
The characteristic information of each benchmark of table 1.
Using Dacapo data set to test the method for the present invention, the details of this data set are as shown in table 1. Dacapo data set includes some other program, eliminates single-threading program and program that JikesRVM cannot run;Each Last two " 06 " and " 09 " of program name are sent out and are not illustrated the versions in 2006 or 2009 versions that its source is Dacapo.
Experimental situation:
Experiment is carried out on a ThinkPad W540 work platforms, and it is furnished with Intel Core i7-4710MQ 2.5GHz processor, 16G internal memory, operating system is Ubuntu14.04.
Employing JikesRVM is platform, and combines C/C++ language and realize communicating of Linux User space and kernel state.Realize Method (i.e. CR) in this invention and DataCollider (being called for short DC), Pacer uses its author disclosed on JikesRVM The program realized.Fig. 4 is the present invention in experiment a kind of realizes framework for Java language.At the framework shown in Fig. 4 In, the sampling to instruction and the identification to synchronization statements are to carry out when JikesRVM loads the byte code files of Java. In the process, the internal storage access instruction to being sampled in the present invention carries out function pitching pile and synchronization statements carries out pitching pile.Synchronize The pitching pile that statement is corresponding can operationally automatically update the local sequential of each thread.To inserting of the internal storage access instruction sampled Pile function operationally can call the core of the present invention: " DC/CR core ", this part realizes being accessed interior to pitching pile instruction The internal memory breakpoint setup deposited.On linux, due to can only be kernel state (i.e. " kernel spacing " in figure) to the setting of internal memory breakpoint In carry out, so Fig. 4 have employed NetLink communication pipe, for communicating of user's space and kernel spacing.By extension The interface of JikesRVM achieves one " User space agency ", and the memory address arranging internal memory breakpoint will be needed to send out by pipeline Deliver to kernel spacing (i.e. " kernel end " in Fig. 4).Kernel end arranges internal memory breakpoint and when breakpoint trigger, passes through communication pipe Breakpoint trigger information is sent to the User space of user's space.And in DC/CR core, have an independent thread periodic cyclic Read breakpoint trigger information, and calculate the testing result of data contention.
Experimental procedure:
(1) use method in Pacer, DC and the present invention that each program runs 1000 times respectively, wherein the 1st 100 Secondary sample rate is 0.1%, and the most every 100 sample rates add 0.1%, and to the last 100 sample rates are 1.0%.Due to DC Have employed the waiting time, the inventive method CR have employed the effective time of internal memory breakpoint, therefore uses both respectively in this experiment 15 milliseconds and 30 milliseconds two configurations, be denoted as DC respectively15、DC30And CR15、CR30
(2) operation of program when for every kind of detection method in step (1) and not detecting, adds up each run Time and the quantity of data contention that every time detects;
(3) present invention and other two kinds of detection methods are contrasted: include time overhead and the data contention detected Quantity.
The comparing result of the data contention amount detection of table 2.CR, Pacer, and DC
Experimental result:
The quantity of the data contention come detected by 3 kinds of detection methods of table 2 itemized record.
On the amount detection of data contention, the sum that Pacer detects is 31, and the sum that DC detects is 14 and 20 Individual, and the sum that the method for the present invention detects is 390 and 404, this quantity is far longer than the number that Pacer and DC detects Amount.
Fig. 5 shows that three kinds of methods are opened from the average time of 0.1% to 1.0% in sample rate on 6 benchmarks The change of pin, it is that the line of 5% is for comparing that Fig. 5 also show a time overhead.
Along with the increase of sample rate, the time overhead of DC increases maximum, and its time when the waiting time 30 milliseconds opens Pin is substantially 2 times when 15 milliseconds of its waiting time.The time overhead increase of Pacer is relatively slower, but it in sample rate is Time overhead when 0.1% is the biggest.And the time overhead increase of method CR of the present invention is the slowest, and in sample rate it is The time overhead that 0.1% is is minimum;When sample rate is 1.0%, its time overhead is about 5%.
In sum, the data contention sample detecting based on Hardware Breakpoint and thread-local sequential proposed in the present invention Method, only can cause the least time overhead sample rate is 1.0% when, and the quantity of its data contention detected does not has Reduce.
There is provided above example to be only used to describe the purpose of the present invention, and be not intended to limit the scope of the present invention.This The scope of invention is defined by the following claims.Various equivalents made without departing from spirit and principles of the present invention and repairing Change, all should contain within the scope of the present invention.

Claims (6)

1. a data contention sample detecting method based on Hardware Breakpoint and program threads this locality sequential, it is characterised in that include Following steps:
(1) preset sequence P and sample rate r, according to r to all instruction samplings in P, uses set to be designated as S, and in S Every instruction instruction breakpoint is set;
(2) simultaneously operating in recognizer P, and to one function call of each simultaneously operating pitching pile;
(3) program is run, and according to following different situations employing different operating:
If A. instruction breakpoint triggers, then obtain that this correspondence instructs as properties: internal storage access address information addr, be No is write operation isWrite, and size size of accessed internal memory;Arrange in size is size afterwards at internal memory addr Deposit breakpoint: if write operation isWrite is true, then read/write memory breakpoint is set, i.e. setDataBreakpointRW (addr, size);The most only arrange and write internal memory breakpoint, i.e. setDataBreakpointW (addr, size);Record current thread t simultaneously1 Local timing values t1And start a timer .preClock,;
If B. certain internal memory breakpoint is by thread t2Trigger, thread t before obtaining the most immediately1Current local sequential t1.curClock, if t1≠t2And t1.preClock=t1.curClock, then on internal memory addr, detect that data are competing Strive;Cancel this breakpoint simultaneously;
If C. when intervalometer triggers, the internal memory breakpoint on addr is not triggered, then cancel this breakpoint;
If D. certain simultaneously operating is performed, then in the function being inserted into, the local sequential of current thread is added 1;
If E. program performs exit instruction, then empty all of internal memory breakpoint, quit a program.
A kind of data contention sample detecting method based on hardware and thread-local sequential the most according to claim 1, its It is characterised by: in described step (1), the sampling to instruction, both can complete before program is run, it is also possible to ran in program Journey is dynamically carried out.
A kind of data contention sample detecting method based on hardware and thread-local sequential the most according to claim 1, its It is characterised by: in described step (1), for the most sampled instruction, when arranging breakpoint, both can be real with the form of pitching pile Existing, it is possible to use the software breakpoint of instruction or Hardware Breakpoint realize.
A kind of data contention sample detecting method based on hardware and thread-local sequential the most according to claim 1, its It is characterised by: the r scope in described step (1) is, 0% < r < 100%.
A kind of data contention sample detecting method based on hardware and thread-local sequential the most according to claim 1, its It is characterised by: in described step (2), to synchronization statements pitching pile, it is possible to use function is replaced or function rewrites and realizes.
A kind of data contention sample detecting method based on hardware and thread-local sequential the most according to claim 1, its It is characterised by: the local sequential in described step (3), it is possible to use complete Happens-before realizes.
CN201610565161.4A 2016-07-18 2016-07-18 A kind of data contention sample detecting method based on hardware and thread-local sequential Active CN106227656B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610565161.4A CN106227656B (en) 2016-07-18 2016-07-18 A kind of data contention sample detecting method based on hardware and thread-local sequential

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610565161.4A CN106227656B (en) 2016-07-18 2016-07-18 A kind of data contention sample detecting method based on hardware and thread-local sequential

Publications (2)

Publication Number Publication Date
CN106227656A true CN106227656A (en) 2016-12-14
CN106227656B CN106227656B (en) 2018-07-17

Family

ID=57520650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610565161.4A Active CN106227656B (en) 2016-07-18 2016-07-18 A kind of data contention sample detecting method based on hardware and thread-local sequential

Country Status (1)

Country Link
CN (1) CN106227656B (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109428915A (en) * 2017-08-25 2019-03-05 北京国双科技有限公司 Data capture method and device
CN111563045A (en) * 2020-05-11 2020-08-21 西安邮电大学 Adaboost model-based concurrent program data competition statement level detection method
CN111694724A (en) * 2019-03-15 2020-09-22 百度在线网络技术(北京)有限公司 Testing method and device of distributed table system, electronic equipment and storage medium
US11150945B2 (en) 2019-09-04 2021-10-19 Red Hat, Inc. Reverse restartable sequences for lock polling scalability

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365776A (en) * 2013-06-28 2013-10-23 中国科学院计算技术研究所 Parallel system weak consistency verifying method and system based on deterministic replay
CN103729291A (en) * 2013-12-23 2014-04-16 华中科技大学 Synchrony relation based parallel dynamic data race detection system
CN104077144A (en) * 2014-07-07 2014-10-01 西安交通大学 Data race detection and evidence generation method based on multithreaded program constraint building
US9135082B1 (en) * 2011-05-20 2015-09-15 Google Inc. Techniques and systems for data race detection
CN104978272A (en) * 2015-07-08 2015-10-14 中国科学院软件研究所 Program scheduling method for data race detection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135082B1 (en) * 2011-05-20 2015-09-15 Google Inc. Techniques and systems for data race detection
CN103365776A (en) * 2013-06-28 2013-10-23 中国科学院计算技术研究所 Parallel system weak consistency verifying method and system based on deterministic replay
CN103729291A (en) * 2013-12-23 2014-04-16 华中科技大学 Synchrony relation based parallel dynamic data race detection system
CN104077144A (en) * 2014-07-07 2014-10-01 西安交通大学 Data race detection and evidence generation method based on multithreaded program constraint building
CN104978272A (en) * 2015-07-08 2015-10-14 中国科学院软件研究所 Program scheduling method for data race detection

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴萍、陈意云、张健: "多线程程序数据竞争的静态检测", 《计算机研究与发展》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109428915A (en) * 2017-08-25 2019-03-05 北京国双科技有限公司 Data capture method and device
CN111694724A (en) * 2019-03-15 2020-09-22 百度在线网络技术(北京)有限公司 Testing method and device of distributed table system, electronic equipment and storage medium
US11150945B2 (en) 2019-09-04 2021-10-19 Red Hat, Inc. Reverse restartable sequences for lock polling scalability
CN111563045A (en) * 2020-05-11 2020-08-21 西安邮电大学 Adaboost model-based concurrent program data competition statement level detection method
CN111563045B (en) * 2020-05-11 2022-11-01 西安邮电大学 Adaboost model-based concurrent program data competition statement level detection method

Also Published As

Publication number Publication date
CN106227656B (en) 2018-07-17

Similar Documents

Publication Publication Date Title
US8813038B2 (en) Data race detection
Edelstein et al. Framework for testing multi‐threaded Java programs
Wang et al. Coverage guided systematic concurrency testing
CN103729288B (en) The adjustment method of application program under a kind of embedded multi-core environment
JP5624480B2 (en) Efficient deterministic multiprocessing (DETERMINISTICMULTIPROCESSING)
CN106227656A (en) A kind of data contention sample detecting method based on hardware and thread-local sequential
US8694997B2 (en) Deterministic serialization in a transactional memory system based on thread creation order
Liu et al. Dynamic synthesis for relaxed memory models
US8997059B2 (en) Reverse debugging
US9454460B2 (en) Methods, systems, and media for providing determinism in multithreaded programs
US9792161B2 (en) Maximizing concurrency bug detection in multithreaded software programs
Bird Measuring function duration with ftrace
US20120089873A1 (en) Systems and methods for automated systematic concurrency testing
WO2008091457A1 (en) Fast and accurate static data-race detection for concurrent programs
Huang et al. Lean: Simplifying concurrency bug reproduction via replay-supported execution reduction
CN105074656B (en) The method and apparatus for managing concurrent predicate expressions
CN110059014B (en) Concurrent program data competition instruction level positioning method
CN104461880B (en) The method and system of automatic detection memory overwriting in a kind of embedded system
Honarmand et al. RelaxReplay: Record and replay for relaxed-consistency multiprocessors
Visan et al. URDB: a universal reversible debugger based on decomposing debugging histories
US20090089555A1 (en) Methods and apparatus for executing or converting real-time instructions
CN115357515A (en) Debugging method and device of multi-core system, computer equipment and storage medium
Park et al. Concurrent breakpoints
WO2020061765A1 (en) Method and device for monitoring performance of processor
Qi et al. Multicoresdk: a practical and efficient data race detector for real-world applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant