static int fetch_active_ports_list(QEMUFile *f,

                                   VirtIOSerial *s, uint32_t nr_active_ports)

{

    uint32_t i;



    s->post_load = g_malloc0(sizeof(*s->post_load));

    s->post_load->nr_active_ports = nr_active_ports;

    s->post_load->connected =

        g_malloc0(sizeof(*s->post_load->connected) * nr_active_ports);



    s->post_load->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,

                                            virtio_serial_post_load_timer_cb,

                                            s);



    /* Items in struct VirtIOSerialPort */

    for (i = 0; i < nr_active_ports; i++) {

        VirtIOSerialPort *port;

        uint32_t elem_popped;

        uint32_t id;



        id = qemu_get_be32(f);

        port = find_port_by_id(s, id);

        if (!port) {

            return -EINVAL;

        }



        port->guest_connected = qemu_get_byte(f);

        s->post_load->connected[i].port = port;

        s->post_load->connected[i].host_connected = qemu_get_byte(f);



        qemu_get_be32s(f, &elem_popped);

        if (elem_popped) {

            qemu_get_be32s(f, &port->iov_idx);

            qemu_get_be64s(f, &port->iov_offset);



            port->elem =

                qemu_get_virtqueue_element(f, sizeof(VirtQueueElement));



            /*

             *  Port was throttled on source machine.  Let's

             *  unthrottle it here so data starts flowing again.

             */

            virtio_serial_throttle_port(port, false);

        }

    }

    timer_mod(s->post_load->timer, 1);

    return 0;

}

static int fetch_active_ports_list(QEMUFile *f,

                                   VirtIOSerial *s, uint32_t nr_active_ports)

{

    uint32_t i;



    s->post_load = g_malloc0(sizeof(*s->post_load));

    s->post_load->nr_active_ports = nr_active_ports;

    s->post_load->connected =

        g_malloc0(sizeof(*s->post_load->connected) * nr_active_ports);



    s->post_load->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,

                                            virtio_serial_post_load_timer_cb,

                                            s);



    

    for (i = 0; i < nr_active_ports; i++) {

        VirtIOSerialPort *port;

        uint32_t elem_popped;

        uint32_t id;



        id = qemu_get_be32(f);

        port = find_port_by_id(s, id);

        if (!port) {

            return -EINVAL;

        }



        port->guest_connected = qemu_get_byte(f);

        s->post_load->connected[i].port = port;

        s->post_load->connected[i].host_connected = qemu_get_byte(f);



        qemu_get_be32s(f, &elem_popped);

        if (elem_popped) {

            qemu_get_be32s(f, &port->iov_idx);

            qemu_get_be64s(f, &port->iov_offset);



            port->elem =

                qemu_get_virtqueue_element(f, sizeof(VirtQueueElement));



            







            virtio_serial_throttle_port(port, false);

        }

    }

    timer_mod(s->post_load->timer, 1);

    return 0;

}

static int FUNC_0(QEMUFile *VAR_0,

                                   VirtIOSerial *VAR_1, uint32_t VAR_2)

{

    uint32_t i;



    VAR_1->post_load = g_malloc0(sizeof(*VAR_1->post_load));

    VAR_1->post_load->VAR_2 = VAR_2;

    VAR_1->post_load->connected =

        g_malloc0(sizeof(*VAR_1->post_load->connected) * VAR_2);



    VAR_1->post_load->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,

                                            virtio_serial_post_load_timer_cb,

                                            VAR_1);



    

    for (i = 0; i < VAR_2; i++) {

        VirtIOSerialPort *port;

        uint32_t elem_popped;

        uint32_t id;



        id = qemu_get_be32(VAR_0);

        port = find_port_by_id(VAR_1, id);

        if (!port) {

            return -EINVAL;

        }



        port->guest_connected = qemu_get_byte(VAR_0);

        VAR_1->post_load->connected[i].port = port;

        VAR_1->post_load->connected[i].host_connected = qemu_get_byte(VAR_0);



        qemu_get_be32s(VAR_0, &elem_popped);

        if (elem_popped) {

            qemu_get_be32s(VAR_0, &port->iov_idx);

            qemu_get_be64s(VAR_0, &port->iov_offset);



            port->elem =

                qemu_get_virtqueue_element(VAR_0, sizeof(VirtQueueElement));



            







            virtio_serial_throttle_port(port, false);

        }

    }

    timer_mod(VAR_1->post_load->timer, 1);

    return 0;

}

static int FUNC_0(QEMUFile *VAR_0,
VirtIOSerial *VAR_1, uint32_t VAR_2)
{ uint32_t i; VAR_1->post_load = g_malloc0(sizeof(*VAR_1->post_load)); VAR_1->post_load->VAR_2 = VAR_2; VAR_1->post_load->connected =
g_malloc0(sizeof(*VAR_1->post_load->connected) * VAR_2); VAR_1->post_load->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
virtio_serial_post_load_timer_cb,
VAR_1); for (i = 0; i < VAR_2; i++) { VirtIOSerialPort *port; uint32_t elem_popped; uint32_t id; id = qemu_get_be32(VAR_0); port = find_port_by_id(VAR_1, id); if (!port) { return -EINVAL; } port->guest_connected = qemu_get_byte(VAR_0); VAR_1->post_load->connected[i].port = port; VAR_1->post_load->connected[i].host_connected = qemu_get_byte(VAR_0); qemu_get_be32s(VAR_0, &elem_popped); if (elem_popped) { qemu_get_be32s(VAR_0, &port->iov_idx); qemu_get_be64s(VAR_0, &port->iov_offset); port->elem =
qemu_get_virtqueue_element(VAR_0, sizeof(VirtQueueElement)); virtio_serial_throttle_port(port, false); } } timer_mod(VAR_1->post_load->timer, 1); return 0; }