From nobody Tue Nov 11 08:45:25 2025 Delivered-To: importer@patchew.org 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; 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=1569574922; cv=none; d=zoho.com; s=zohoarc; b=QCo8jymbcJmnXycjqmEmz9ANCX0pGm36EvkCcoLCPwxiZ2MB2C7qLqFARuS4DEX5ER3l/AM1QOphU9AWFnQujamgxa+B6HKfWgkBVyEz0XP+CgjqVP+YhtuY11m4Fu4yQJKdu5ki7zhsITLY4F13Ngx7zqd1vs2dwKVQREY6JsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569574922; 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=y0wVV0QHndR8pYtdX/KfyeRXUXRdzuvLB5zFhC6eGlo=; b=NAyBRD0pnjh70WhEsCyEMHh3LpdMB4zopktR9UAaBAIahXQWibi3arzbEFyMpAiqTJEshIa3Csg0vNuglXrMK3lHJedfgWArMvUiM/PGKptiBbrRfL7S3NZy0jxDIX6zTjckn4H+5XjKNgslUVBjugWxwJtoLIc6b1rvB3VrFpg= 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 1569574922841465.3939481597929; Fri, 27 Sep 2019 02:02:02 -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 1iDm7b-0005Rm-8J; Fri, 27 Sep 2019 09:01:03 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iDm7a-0005QC-CQ for xen-devel@lists.xenproject.org; Fri, 27 Sep 2019 09:01:02 +0000 Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id 4e7256a8-e105-11e9-bf31-bc764e2007e4; Fri, 27 Sep 2019 09:00:52 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 86561AFCC; Fri, 27 Sep 2019 09:00:51 +0000 (UTC) X-Inumbo-ID: 4e7256a8-e105-11e9-bf31-bc764e2007e4 X-Virus-Scanned: by amavisd-new at test-mx.suse.de From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 27 Sep 2019 11:00:46 +0200 Message-Id: <20190927090048.28872-5-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190927090048.28872-1-jgross@suse.com> References: <20190927090048.28872-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v1 4/6] tools: add xenfs tool 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: Juergen Gross , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add the xenfs tool for accessing the hypervisor filesystem. Signed-off-by: Juergen Gross --- V1: - rename to xenhypfs - don't use "--" for subcommands - add write support --- .gitignore | 1 + tools/misc/Makefile | 6 +++ tools/misc/xenhypfs.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 127 insertions(+) create mode 100644 tools/misc/xenhypfs.c diff --git a/.gitignore b/.gitignore index 3ada0c4f0b..954c1da2cb 100644 --- a/.gitignore +++ b/.gitignore @@ -370,6 +370,7 @@ tools/libxl/test_timedereg tools/libxl/test_fdderegrace tools/firmware/etherboot/eb-roms.h tools/firmware/etherboot/gpxe-git-snapshot.tar.gz +tools/misc/xenhypfs tools/misc/xenwatchdogd tools/misc/xen-hvmcrash tools/misc/xen-lowmemd diff --git a/tools/misc/Makefile b/tools/misc/Makefile index 63947bfadc..9fdb13597f 100644 --- a/tools/misc/Makefile +++ b/tools/misc/Makefile @@ -24,6 +24,7 @@ INSTALL_SBIN-$(CONFIG_X86) +=3D xen-lowmemd INSTALL_SBIN-$(CONFIG_X86) +=3D xen-mfndump INSTALL_SBIN-$(CONFIG_X86) +=3D xen-ucode INSTALL_SBIN +=3D xencov +INSTALL_SBIN +=3D xenhypfs INSTALL_SBIN +=3D xenlockprof INSTALL_SBIN +=3D xenperf INSTALL_SBIN +=3D xenpm @@ -86,6 +87,9 @@ xenperf: xenperf.o xenpm: xenpm.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) =20 +xenhypfs: xenhypfs.o + $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenhypfs) $(APPEND_LDFLAGS) + xenlockprof: xenlockprof.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) =20 @@ -94,6 +98,8 @@ xen-hptool.o: CFLAGS +=3D -I$(XEN_ROOT)/tools/libxc $(CFL= AGS_libxencall) xen-hptool: xen-hptool.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenevtchn) $(LDLIBS_libxenctrl) $(L= DLIBS_libxenguest) $(LDLIBS_libxenstore) $(APPEND_LDFLAGS) =20 +xenhypfs.o: CFLAGS +=3D $(CFLAGS_libxenhypfs) + # xen-mfndump incorrectly uses libxc internals xen-mfndump.o: CFLAGS +=3D -I$(XEN_ROOT)/tools/libxc $(CFLAGS_libxencall) xen-mfndump: xen-mfndump.o diff --git a/tools/misc/xenhypfs.c b/tools/misc/xenhypfs.c new file mode 100644 index 0000000000..4004be57bc --- /dev/null +++ b/tools/misc/xenhypfs.c @@ -0,0 +1,120 @@ +#define _GNU_SOURCE +#include +#include +#include +#include + +static struct xenhypfs_handle *hdl; + +static int xenhypfs_cat(char *path) +{ + int ret =3D 0; + char *result; + + result =3D xenhypfs_read(hdl, path); + if (!result) { + perror("could not read"); + ret =3D 3; + } else { + printf("%s\n", result); + free(result); + } + + return ret; +} + +static int xenhypfs_wr(char *path, char *val) +{ + int ret; + + ret =3D xenhypfs_write(hdl, path, val); + if (ret) { + perror("could not write"); + ret =3D 3; + } + + return ret; +} + +static int xenhypfs_ls(char *path) +{ + struct xenhypfs_dirent *ent; + unsigned int n, i; + int ret =3D 0; + + ent =3D xenhypfs_readdir(hdl, path, &n); + if (!ent) { + perror("could not read dir"); + ret =3D 3; + } else { + for (i =3D 0; i < n; i++) + printf("%c %s\n", ent[i].is_dir ? 'd' : '-', ent[i].name); + + free(ent); + } + + return ret; +} + +static int xenhypfs_tree_sub(char *path, unsigned int depth) +{ + struct xenhypfs_dirent *ent; + unsigned int n, i; + int ret =3D 0; + char *p; + + ent =3D xenhypfs_readdir(hdl, path, &n); + if (!ent) + return 1; + + for (i =3D 0; i < n; i++) { + printf("%*s%s%s\n", depth * 2, "", ent[i].name, + ent[i].is_dir ? "/" : ""); + if (ent[i].is_dir) { + asprintf(&p, "%s%s%s", path, (depth =3D=3D 1) ? "" : "/", ent[= i].name); + if (xenhypfs_tree_sub(p, depth + 1)) + ret =3D 1; + } + } + + free(ent); + + return ret; +} + +static int xenhypfs_tree(void) +{ + printf("/\n"); + + return xenhypfs_tree_sub("/", 1); +} + +int main(int argc, char *argv[]) +{ + int ret; + + hdl =3D xenhypfs_open(NULL, 0); + + if (!hdl) { + fprintf(stderr, "Could not open libxenhypfs\n"); + ret =3D 2; + } else if (argc =3D=3D 3 && !strcmp(argv[1], "cat")) + ret =3D xenhypfs_cat(argv[2]); + else if (argc =3D=3D 3 && !strcmp(argv[1], "ls")) + ret =3D xenhypfs_ls(argv[2]); + else if (argc =3D=3D 4 && !strcmp(argv[1], "write")) + ret =3D xenhypfs_wr(argv[2], argv[3]); + else if (argc =3D=3D 2 && !strcmp(argv[1], "tree")) + ret =3D xenhypfs_tree(); + else { + fprintf(stderr, "usage: xenhypfs ls \n"); + fprintf(stderr, " xenhypfs cat \n"); + fprintf(stderr, " xenhypfs write \n"); + fprintf(stderr, " xenhypfs tree\n"); + ret =3D 1; + } + + xenhypfs_close(hdl); + + return ret; +} --=20 2.16.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel