From nobody Mon Feb 9 04:46:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1564761537; cv=none; d=zoho.com; s=zohoarc; b=byk2oLJzADJIae+Dm5BfSrGB20VzCXHp36bwoe8Asczng5ti3RvSTknJy6LcgHo9z1LOgYQxT0PQlTMqhiOf6daX3JBm4WFGrPwedn3H3bH0WJyK8Y+5M23UdBnU4O0HiQ/qpklWa5M+rt6ejxd9ef4KfhBYZrK/Gr2C6xlzGzw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564761537; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2MoxYkDt1S+1VN/Wrps5Ei8FLxxggCnW9z0DgedIyJs=; b=Ei5XhODsfaPRUHXIouBAtdTRknXrAqr/UnvB5JzmcedjjMHoGzbKikdmZ18W33L0xOTo3rOutLKvGuB3loGDIw+odaW0PMC6eEeJ5kIfJ8rP0WHrkBD5tVdHOr+YkUFny3khHLDSBq7OHnHi862McbScSE0XbWRvO8k2P3BtkzA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 156476153797813.919800609300864; Fri, 2 Aug 2019 08:58:57 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1htZws-0006Sk-07; Fri, 02 Aug 2019 15:58:30 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1htZwq-0006Q9-ES for xen-devel@lists.xenproject.org; Fri, 02 Aug 2019 15:58:28 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 5c8cfe20-b53e-11e9-a756-af28f40f8b76; Fri, 02 Aug 2019 15:58:26 +0000 (UTC) X-Inumbo-ID: 5c8cfe20-b53e-11e9-a756-af28f40f8b76 Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: 8tUW1R3M9FgMZ6W4R2LZpeBUCi7J9hhshiYdfJ9RdfgtfA11CmY1I+MLIX1re6H3ckaWntISkG J019ObP6MGqSlvBpnnb+qRIL/5qcR46dDJyLFqZLiTZmOH1JIfeyUpD0enS2llwNGj+dI/iUBe P+oEj86IjkV+fN5MsnV60ykcfBkNpyHUF+jU8csJ57/dc+JzlpmVrI+0J91LzTLXEbdJ1Q8Rfl lIdBSNOT2t1Bu5PWx9WYtF2Uxi73FlTO/sgwSRnWrOcFI14IJYszHFMQCbfIUp0KSuDN3qewQh Fmw= X-SBRS: 2.7 X-MesageID: 3911387 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,338,1559534400"; d="scan'208";a="3911387" From: Anthony PERARD To: Date: Fri, 2 Aug 2019 16:36:04 +0100 Message-ID: <20190802153606.32061-34-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190802153606.32061-1-anthony.perard@citrix.com> References: <20190802153606.32061-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 33/35] libxl: Extract qmp_parse_query_cpus X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Wei Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" The QMP command "query-cpus" is called from different places, extract the algorithm that parse the answer into a separate function. Signed-off-by: Anthony PERARD Acked-by: Ian Jackson --- tools/libxl/libxl_domain.c | 69 ++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c index 4726e27d20..b97e874a9c 100644 --- a/tools/libxl/libxl_domain.c +++ b/tools/libxl/libxl_domain.c @@ -1457,6 +1457,35 @@ static int libxl__set_vcpuonline_xenstore(libxl__gc = *gc, uint32_t domid, return rc; } =20 +static int qmp_parse_query_cpus(libxl__gc *gc, + libxl_domid domid, + const libxl__json_object *response, + libxl_bitmap *const map) +{ + int i; + const libxl__json_object *cpu; + + libxl_bitmap_set_none(map); + /* Parse response to QMP command "query-cpus": + * [ { 'CPU': 'int',...} ] + */ + for (i =3D 0; (cpu =3D libxl__json_array_get(response, i)); i++) { + unsigned int cpu_index; + const libxl__json_object *o; + + o =3D libxl__json_map_get("CPU", cpu, JSON_INTEGER); + if (!o) { + LOGD(ERROR, domid, "Failed to retrieve CPU index."); + return ERROR_QEMU_API; + } + + cpu_index =3D libxl__json_object_get_integer(o); + libxl_bitmap_set(map, cpu_index); + } + + return 0; +} + typedef struct set_vcpuonline_state { libxl__ev_qmp qmp; libxl__ev_time timeout; @@ -1466,18 +1495,14 @@ typedef struct set_vcpuonline_state { int index; /* for loop on final_map */ } set_vcpuonline_state; =20 -static void set_vcpuonline_qmp_cpus_queried(libxl__egc *, libxl__ev_qmp *, - const libxl__json_object *, - int rc); -static void set_vcpuonline_qmp_add_cpu(libxl__egc *, libxl__ev_qmp *, - const libxl__json_object *response, - int rc); -static void set_vcpuonline_timeout(libxl__egc *egc, libxl__ev_time *ev, - const struct timeval *requested_abs, - int rc); +static void set_vcpuonline_qmp_cpus_queried(libxl__egc *, + libxl__ev_qmp *, const libxl__json_object *, int rc); +static void set_vcpuonline_qmp_add_cpu(libxl__egc *, + libxl__ev_qmp *, const libxl__json_object *response, int rc); +static void set_vcpuonline_timeout(libxl__egc *egc, + libxl__ev_time *ev, const struct timeval *requested_abs, int rc); static void set_vcpuonline_done(libxl__egc *egc, - set_vcpuonline_state *svos, - int rc); + set_vcpuonline_state *svos, int rc); =20 int libxl_set_vcpuonline(libxl_ctx *ctx, uint32_t domid, libxl_bitmap *cpumap, @@ -1493,6 +1518,7 @@ int libxl_set_vcpuonline(libxl_ctx *ctx, uint32_t dom= id, svos->qmp.domid =3D domid; svos->qmp.payload_fd =3D -1; libxl__ev_time_init(&svos->timeout); + svos->cpumap =3D cpumap; libxl_dominfo_init(&svos->info); libxl_bitmap_init(&svos->final_map); =20 @@ -1556,7 +1582,6 @@ static void set_vcpuonline_qmp_cpus_queried(libxl__eg= c *egc, { EGC_GC; set_vcpuonline_state *svos =3D CONTAINER_OF(qmp, *svos, qmp); - const libxl__json_object *cpu; int i; libxl_bitmap current_map; =20 @@ -1568,23 +1593,8 @@ static void set_vcpuonline_qmp_cpus_queried(libxl__e= gc *egc, if (rc) goto out; =20 libxl_bitmap_alloc(CTX, ¤t_map, svos->info.vcpu_max_id + 1); - libxl_bitmap_set_none(¤t_map); - - for (i =3D 0; (cpu =3D libxl__json_array_get(response, i)); i++) { - unsigned int cpu_index; - const libxl__json_object *o; - - o =3D libxl__json_map_get("CPU", cpu, JSON_INTEGER); - if (!o) { - LOGD(ERROR, qmp->domid, "Failed to retrieve CPU index."); - rc =3D ERROR_QEMU_API; - goto out; - } - - cpu_index =3D libxl__json_object_get_integer(o); - libxl_bitmap_set(¤t_map, cpu_index); - } - + rc =3D qmp_parse_query_cpus(gc, qmp->domid, response, ¤t_map); + if (rc) goto out; =20 libxl_bitmap_copy_alloc(CTX, final_map, svos->cpumap); =20 @@ -1653,6 +1663,7 @@ static void set_vcpuonline_done(libxl__egc *egc, =20 libxl_bitmap_dispose(&svos->final_map); libxl_dominfo_dispose(&svos->info); + libxl__ev_time_deregister(gc, &svos->timeout); libxl__ev_qmp_dispose(gc, &svos->qmp); libxl__ao_complete(egc, ao, rc); } --=20 Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel