Almost there... Il 28/11/2012 09:55, Wenchao Xia ha scritto: > +/* This file was only used in libqblock, codes are copied from main-loop.c, > + iohandler.c, compatfd.c now, it may have different implemention in the > future. > +*/
No need for this comment. > + > +/* Signal fd support, original codes are from compatfd.c */ > + > bool qemu_signalfd_available(void) > { > return false; I think this stub can instead be placed in stubs/. > +int qb_image_new(QBlockContext *context, > + QBlockImage **p_qbi) > +{ > + *p_qbi = g_malloc0_n(1, sizeof(QBlockImage)); > + (*p_qbi)->bdrvs = bdrv_new("hda"); > + if ((*p_qbi)->bdrvs == NULL) { > + QB_FREE(*p_qbi); > + set_context_err(context, QB_ERR_INTERNAL_ERR, > + "failed to create the driver."); > + return context->err_ret; > + } > + return 0; > +} The first reference should already be provided by qb_image_new. > > +__attribute__((constructor)) > +static void libqblock_init(void) > +{ > + /* Todo: add an assertion about the ABI. */ > + if (libqb_global_data.init_flag == 0) { > + libqblock_runtime_init(); > + libqb_global_data.init_flag = 1; > + } > +} How can this be called with libqb_global_data.init_flag == 1?