On Mon, Jul 17, 2017 at 03:42:30PM +0200, Juan Quintela wrote: [...]
> int multifd_load_setup(void) > { > int thread_count; > - uint8_t i; > > if (!migrate_use_multifd()) { > return 0; > } > thread_count = migrate_multifd_threads(); > multifd_recv_state = g_malloc0(sizeof(*multifd_recv_state)); > - multifd_recv_state->params = g_new0(MultiFDRecvParams, thread_count); > + multifd_recv_state->params = g_new0(MultiFDRecvParams *, thread_count); > multifd_recv_state->count = 0; > - for (i = 0; i < thread_count; i++) { > - char thread_name[16]; > - MultiFDRecvParams *p = &multifd_recv_state->params[i]; > - > - qemu_mutex_init(&p->mutex); > - qemu_sem_init(&p->sem, 0); > - p->quit = false; > - p->id = i; > - snprintf(thread_name, sizeof(thread_name), "multifdrecv_%d", i); > - qemu_thread_create(&p->thread, thread_name, multifd_recv_thread, p, > - QEMU_THREAD_JOINABLE); > - multifd_recv_state->count++; > - } Could I ask why we explicitly switched from MultiFDRecvParams[] array into a pointer array? Can we still use the old array? Thanks, -- Peter Xu