diff options
author | Wenchao Xia | 2014-06-18 08:43:28 +0200 |
---|---|---|
committer | Luiz Capitulino | 2014-06-23 17:01:25 +0200 |
commit | 21cd70dfc1a6dc90511bae55a460a3a55461339a (patch) | |
tree | ecde7d3f4f60d0d0e70982d215ccc67043ebb11f /scripts/qapi.py | |
parent | qapi: add event helper functions (diff) | |
download | qemu-21cd70dfc1a6dc90511bae55a460a3a55461339a.tar.gz qemu-21cd70dfc1a6dc90511bae55a460a3a55461339a.tar.xz qemu-21cd70dfc1a6dc90511bae55a460a3a55461339a.zip |
qapi script: add event support
qapi-event.py will parse the schema and generate qapi-event.c, then
the API in qapi-event.c can be used to handle events in qemu code.
All API have prefix "qapi_event".
The script mainly includes two parts: generate API for each event
define, generate an enum type for all defined events.
Since in some cases the real emit behavior may change, for example,
qemu-img would not send a event, a callback layer is used to
control the behavior. As a result, the stubs at compile time
can be saved, the binding of block layer code and monitor code
will become looser.
Signed-off-by: Wenchao Xia <wenchaoqemu@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Diffstat (limited to 'scripts/qapi.py')
-rw-r--r-- | scripts/qapi.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/scripts/qapi.py b/scripts/qapi.py index 0079194169..54b97cb48e 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -248,6 +248,16 @@ def discriminator_find_enum_define(expr): return find_enum(discriminator_type) +def check_event(expr, expr_info): + params = expr.get('data') + if params: + for argname, argentry, optional, structured in parse_args(params): + if structured: + raise QAPIExprError(expr_info, + "Nested structure define in event is not " + "supported now, event '%s', argname '%s'" + % (expr['event'], argname)) + def check_union(expr, expr_info): name = expr['union'] base = expr.get('base') @@ -311,6 +321,8 @@ def check_exprs(schema): expr = expr_elem['expr'] if expr.has_key('union'): check_union(expr, expr_elem['info']) + if expr.has_key('event'): + check_event(expr, expr_elem['info']) def parse_schema(input_file): try: |