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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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
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.
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)
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)
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 |
-
2016
- 2016-07-18 CN CN201610565161.4A patent/CN106227656B/en active Active
Patent Citations (5)
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)
Title |
---|
吴萍、陈意云、张健: "多线程程序数据竞争的静态检测", 《计算机研究与发展》 * |
Cited By (5)
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 |