diff options
Diffstat (limited to 'mixlib/mix_vm.c')
-rw-r--r-- | mixlib/mix_vm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mixlib/mix_vm.c b/mixlib/mix_vm.c index 979d558..6da21e2 100644 --- a/mixlib/mix_vm.c +++ b/mixlib/mix_vm.c @@ -87,6 +87,8 @@ mix_vm_delete (mix_vm_t * vm) { int i; + g_return_if_fail (vm != NULL); + if (vm->line_table != NULL) g_tree_destroy (vm->line_table); if (vm->address_table != NULL) g_tree_destroy (vm->address_table); if (vm->symbol_table != NULL) mix_symbol_table_delete (vm->symbol_table); @@ -97,6 +99,23 @@ mix_vm_delete (mix_vm_t * vm) g_free (vm); } +/* connect devices to a virtual machine */ +mix_device_t * +mix_vm_connect_device (mix_vm_t *vm, mix_device_t *device) +{ + mix_device_t *old; + mix_device_type_t type; + + g_return_val_if_fail (vm != NULL, NULL); + g_return_val_if_fail (device != NULL, NULL); + + type = mix_device_type (device); + old = vm->devices[type]; + vm->devices[type] = device; + + return old; +} + /* Reset a vm (set state as of a newly created one) */ void mix_vm_reset (mix_vm_t * vm) |