Lines Matching +full:instance +full:- +full:id
7 * See the COPYING file in the top-level directory.
15 #include "qapi/qapi-commands-yank.h"
16 #include "qapi/qapi-visit-yank.h"
17 #include "qapi/clone-visitor.h"
27 YankInstance *instance; member
37 * OOB-capable commands, it must be "fast", i.e. it may only be held for a
38 * bounded, short time. See docs/devel/qapi-code-gen.rst for additional
48 if (a->type != b->type) { in yank_instance_equal()
52 switch (a->type) { in yank_instance_equal()
54 return g_str_equal(a->u.block_node.node_name, in yank_instance_equal()
55 b->u.block_node.node_name); in yank_instance_equal()
58 return g_str_equal(a->u.chardev.id, b->u.chardev.id); in yank_instance_equal()
68 static YankInstanceEntry *yank_find_entry(const YankInstance *instance) in yank_find_entry() argument
73 if (yank_instance_equal(entry->instance, instance)) { in yank_find_entry()
80 bool yank_register_instance(const YankInstance *instance, Error **errp) in yank_register_instance() argument
86 if (yank_find_entry(instance)) { in yank_register_instance()
87 error_setg(errp, "duplicate yank instance"); in yank_register_instance()
92 entry->instance = QAPI_CLONE(YankInstance, instance); in yank_register_instance()
93 QLIST_INIT(&entry->yankfns); in yank_register_instance()
99 void yank_unregister_instance(const YankInstance *instance) in yank_unregister_instance() argument
104 entry = yank_find_entry(instance); in yank_unregister_instance()
107 assert(QLIST_EMPTY(&entry->yankfns)); in yank_unregister_instance()
109 qapi_free_YankInstance(entry->instance); in yank_unregister_instance()
113 void yank_register_function(const YankInstance *instance, in yank_register_function() argument
121 entry = yank_find_entry(instance); in yank_register_function()
125 func_entry->func = func; in yank_register_function()
126 func_entry->opaque = opaque; in yank_register_function()
128 QLIST_INSERT_HEAD(&entry->yankfns, func_entry, next); in yank_register_function()
131 void yank_unregister_function(const YankInstance *instance, in yank_unregister_function() argument
139 entry = yank_find_entry(instance); in yank_unregister_function()
142 QLIST_FOREACH(func_entry, &entry->yankfns, next) { in yank_unregister_function()
143 if (func_entry->func == func && func_entry->opaque == opaque) { in yank_unregister_function()
161 for (tail = instances; tail; tail = tail->next) { in qmp_yank()
162 entry = yank_find_entry(tail->value); in qmp_yank()
164 error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "Instance not found"); in qmp_yank()
168 for (tail = instances; tail; tail = tail->next) { in qmp_yank()
169 entry = yank_find_entry(tail->value); in qmp_yank()
171 QLIST_FOREACH(func_entry, &entry->yankfns, next) { in qmp_yank()
172 func_entry->func(func_entry->opaque); in qmp_yank()
188 new_entry->value = QAPI_CLONE(YankInstance, entry->instance); in qmp_query_yank()
189 new_entry->next = ret; in qmp_query_yank()