}
}
-static void fd_chr_free(struct Chardev *chr)
+static void char_fd_finalize(Object *obj)
{
- FDChardev *s = FD_CHARDEV(chr);
+ Chardev *chr = CHARDEV(obj);
+ FDChardev *s = FD_CHARDEV(obj);
remove_fd_in_watch(chr);
if (s->ioc_in) {
cc->chr_add_watch = fd_chr_add_watch;
cc->chr_write = fd_chr_write;
cc->chr_update_read_handler = fd_chr_update_read_handler;
- cc->chr_free = fd_chr_free;
}
static const TypeInfo char_fd_type_info = {
.name = TYPE_CHARDEV_FD,
.parent = TYPE_CHARDEV,
.instance_size = sizeof(FDChardev),
+ .instance_finalize = char_fd_finalize,
.class_init = char_fd_class_init,
.abstract = true,
};
static void char_stdio_finalize(Object *obj)
{
term_exit();
- fd_chr_free(CHARDEV(chr));
}
static void qemu_chr_open_stdio(Chardev *chr,
}
return 0;
}
-
-static void qemu_chr_free_tty(Chardev *chr)
-{
- fd_chr_free(chr);
-}
#endif /* __linux__ || __sun__ */
#if defined(__linux__)
cc->open = qmp_chardev_open_serial;
#ifndef _WIN32
cc->chr_ioctl = tty_serial_ioctl;
- cc->chr_free = qemu_chr_free_tty;
#endif
}