From patchwork Wed Sep 20 11:28:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1837208 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=OvjI19D/; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::440; helo=mail-wr1-x440.google.com; envelope-from=swupdate+bncbaabb65ovouamgqesq4ov5q@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-wr1-x440.google.com (mail-wr1-x440.google.com [IPv6:2a00:1450:4864:20::440]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RrGWl4V0xz1ynX for ; Wed, 20 Sep 2023 21:29:06 +1000 (AEST) Received: by mail-wr1-x440.google.com with SMTP id ffacd0b85a97d-31f3cfe7269sf4524275f8f.2 for ; Wed, 20 Sep 2023 04:29:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695209340; cv=pass; d=google.com; s=arc-20160816; b=QV3d5n4balkRIHptHR3LOSEn8AD74HVvqPPYhkg+oODo6IyKr54BVZmh9qh6gl8R0x q0Gqc9uWzsYcCd6Ekj8poGFHvQhd+40b4OgvyUEtGB3jlccL8b8JUwcCW1i/wpBIK7BN odwZ42XCU8X1+Sg8+v/rbc5L2TmgaTNkqgQvBThUd/9lt2bpHFPpaLFElWhm6yUQBNIN NuS60kQqiMcyYjpGxvDNtd5knk7S53uF5Gl0heQ2ksX+hI42qUXLkP4bkfL6Q/t/Ki34 0TOmJcPayMCU5sGwWWaHuQipUXt0e1Fuuxqo9JhWzHxjACROGWTPsC3MCMsBbC0EaUgA yyMg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:ui-outboundreport:mime-version :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=U9+YmKPr0Bey/XZGsQ1/vUlOhBXnN0IvLIGMCDXNg7A=; fh=8u4nXWkWfzeqbXP0UT75s85/h4s7uxrSR+HFzefBUus=; b=jY3QUA81FGpPUiLbBjmueA05MLCyTt5ic3IYC/0miY9mxHUN3pBWkhF/wqmv77rAJ+ u3mJnKClLaudR5s6WgjaIyq4PAcca4YIa6dJH/3o/Bgi9zVutlfbYtisIShnY7YVKeSh vWKlbNKa9Opc2LcdWpMva5zQYMBZRAT97xbivG5VM8UB5/Nd5pdRlKFWJFMxYsrD+nok 2ugqrsC6AYV/u5xvPUWlb5vgAtAlkxFojJdlKMFjC91plNfVhEJz0pwwK+cpqHwbyezr QQqrMy+lsqvnvOkK527Je0Lw0jtfLZG7wWgAsfI9KA7h/z3LH3KrT6hhlKgFJ8FGJd2t rsrg== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.126.130 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1695209340; x=1695814140; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:ui-outboundreport:mime-version:message-id:date :subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=U9+YmKPr0Bey/XZGsQ1/vUlOhBXnN0IvLIGMCDXNg7A=; b=OvjI19D/bAHt8qh5FaHtysc+MzUESoidvLS2FXe28efpV6aFADEjAd3yKBJVOFXF0I SeCrwsuVnCY9lfqaQ7ef9hWvwnk6Q+IsSGbmIPKamHh5WBqZeH0tKieRSVlU485Dbbq2 uvpGnioFUt8hAvqHKKZE9RxZ4H/D+oN6+dF3p6jvFilf1iANvVg0fkmBaFhWHe7kUdZv nCdeEmkFnpDMMvDWi0lJj/fQkRsQREG4j5aZZnLTHEI5xMxb3hUieqzRwXXLRM4aEXNK Xq9O6PH1idaHXQl2hHav0QsNlBrnpny3lPSsdWiOU9HSX4LrADPduQqAaqsPA5D2CFop 6Qww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695209340; x=1695814140; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :ui-outboundreport:mime-version:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=U9+YmKPr0Bey/XZGsQ1/vUlOhBXnN0IvLIGMCDXNg7A=; b=RzjE4GDrY824rOIoZuWcPBHNy9kBh2WQraxytCCrpmRyTwI0sAkLAATj2CcrpOo7Js N9BNjGF+N25aKixuRWKgDp+rajtQaS9wq3Uk5DGI3w60viH2WmfAghNtLdc5XV2Nan+C 7KPnGZac/yLS3/2mDbTilIaafygANrnSXmUYN+FIPy7eyDD8JJnj9HbkMMWFsfmWpqdC knB59V4zZr/M1TQY/83/wEMLopGmZrqZ/cxoEAKcBqNmiV2NUcHVhkrDESmII9hO8VZe A5egOLgsJ9JbGFTTV3YZEYQw+hqR0FPzVu9gUlQ99ufkgEAXMll9NLUcerZxpZ2Rn/7L pGlA== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0Yx0ZIgnns5bsCfj00T6oTZUVJXDRJIhmjbIUr2ftnJhJ0I3vrol mvNkSHDsH6H3f+f1TemIjjo= X-Google-Smtp-Source: AGHT+IFmV2AQg7LgbR4kDctBknNPV1xYJdx9kF1ljS067e950yR3va340EQxkNdFOlrTCCAv9Cc+mA== X-Received: by 2002:adf:f18a:0:b0:31f:e74d:c82a with SMTP id h10-20020adff18a000000b0031fe74dc82amr1791688wro.31.1695209339693; Wed, 20 Sep 2023 04:28:59 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a5d:45cb:0:b0:317:79ec:7a0 with SMTP id b11-20020a5d45cb000000b0031779ec07a0ls2191088wrs.1.-pod-prod-04-eu; Wed, 20 Sep 2023 04:28:58 -0700 (PDT) X-Received: by 2002:a5d:614d:0:b0:31f:bdfd:5d30 with SMTP id y13-20020a5d614d000000b0031fbdfd5d30mr1824602wrt.57.1695209338077; Wed, 20 Sep 2023 04:28:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695209338; cv=none; d=google.com; s=arc-20160816; b=LMcpPEvia5IOfHznVYVFO92+7OLRC9GZ6Qv2wwBz08wCTrchfY1apZLi23SByGvIEJ z8ou5LgyKIsTSiyIwoxV9sh8kyh7OoqBweZcPDJauRDo/WzjT/nHZl+Vv4VYIjqEY/+T EyIoe6zNjLcwnsmr0tBY1XfyyeAfoSuPFrM8hGUh1daQSfSfRb6WZzi3AJAljONGCA+B h1WmsU+ItpEgZuoKLfqtHOYf6+PD//Mc9r4bLDUm3/TB59CKzlEWPEKkvXzIZRALSHHY Z9xUDD2G0nQF7DhN6JeEQJ9RY2nudb9UwHtNeFtJ2C2/h/zqa2utNHLeP7e5OiIO2cXl NJ5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=ui-outboundreport:content-transfer-encoding:mime-version:message-id :date:subject:cc:to:from; bh=/VSJZ53rLlT/k2mZy1GuFviLwviFUqiG2fw63BE/wc8=; fh=8u4nXWkWfzeqbXP0UT75s85/h4s7uxrSR+HFzefBUus=; b=kdVLcc9QXgLmz11ojma1odFASeh2TAFa3DCIDmp/lfw6JkSGDwgcML0T0D0jCwM47l uQeiYxQHYFuRrxbNxnDxEbcJg7JYUWEO69bEdUL/hlXKl/i09P44yNFtkTX4rpequgCW BUUiVSXtPp3yfVLc47Z3zywPw1+4YcShhZdSN/6KyKomIIrG2NlRyn2Yc+iHtC/8znKR XdtuW6k5LxTywBIQ7KPF78rCMRU5hYm1AwfBUL1W0Gp146fGr7BG8YTrAtMVJdDKy4n8 /TvSV2xCDjWVN3qI4EHCMT3J7Ww9zG/Ft0Kt2Wa4YLvpAy0E58/bIyDLa7hsGlRHh06b amDg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.126.130 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Received: from mout.kundenserver.de (mout.kundenserver.de. [212.227.126.130]) by gmr-mx.google.com with ESMTPS id bq6-20020a5d5a06000000b003216ba7c697si236565wrb.7.2023.09.20.04.28.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 04:28:58 -0700 (PDT) Received-SPF: pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.126.130 as permitted sender) client-ip=212.227.126.130; Received: from paperino.fritz.box ([88.217.136.221]) by mrelayeu.kundenserver.de (mreue011 [213.165.67.97]) with ESMTPSA (Nemesis) id 1MV5rK-1r9pct2OP8-00S9cm; Wed, 20 Sep 2023 13:28:57 +0200 From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic , Frieder Schrempf Subject: [swupdate] [libubootenv][PATCH V2] Add libuboot_namespace_from_dt Date: Wed, 20 Sep 2023 13:28:54 +0200 Message-Id: <20230920112854.65926-1-stefano.babic@swupdate.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:/njpUbGdcJQljgvfMha/DZbP/s2dVq73SMcQxsGR+leaJ11Xepb b2Tn/7t58IUSYLUyYKUp5o3Coarc0MDsijtdLHQca1X+mRxykjHOtTSdDO/uF7ulenK0KHS rMIKSSgg89Nh5Nwu9TOnRxBKu7LvcUCljqTKEXm5x1BR4mH9B8BvV15WQ/c+yqiB9/07Lqe DKC+utJ2muz2LmCPhO0Tw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:GAZKA6n5tTE=;+zWNZVEWXEz7M1Nqn5pszFB7bu/ Hj6Ibrq1L5hGJVHNCd390rYlbWGItq+nl6Zqe1Q73ieSkFzvrRuo60l5bPLPjlTzlO+aHQZ/3 dFbO5HJ2hChA7UnQbfJaXnWzYyASHSiHoT2FMt7kQ+keZMTBiKQuJE8yBN7DWjql7zEarZq1b CvvS+HVmsxtJeJHiUV/zJkFFM6x86F48E7NdeONdFE48rLz6LXQqd3nMrmQXb8AH/ynF1I1gs +kxw7t3lC2mfFP5XyzhjtCc4DXhAHLVlMpw4F7V5WjXj0yER7V3bh+BMzYzJsXgB+cYkUUCY5 qZQKc0J0HjvbO6CKrOrlX7N4b823ow4Oo4o65Vj/NLbJ6XB4OJPe4CKHdGZzTQn48HF8DxLHh k0lel4475fuA6GYYRA5gwshBbAYK4i/OcUTi1ux6dVKRw5VaNQz03+D3vBnJqt67husIPYMwj 7ytubZw0hmOyP4pJC7tFzH5BJY569IHedgPlQkLLz2WUoxbvqANWLRvQXmrL011nG4+TFFl9m 5bNbkqvy2BwItMNFG4IhvSSxJQMht5nqX87B8FBu9L7d5IsmNMhPmfQuxOzCEGMGEihSqhKZU tG+Mp5WK9T64IZLX9ZlfSogZWWMqAKUGOFrDkQyKF5UvfKMKBWQlD3PI92WlQ81p50dlfgDz5 4q/ibQD44OldEWkTLoQ5CnnCxajHGExWmHvb5Uq+jjchRpchIG9cs6iheSlG1Bb/2LUCCNAd4 ULQ9IGF9xultXsf0k6ub/Y4CEPPRbVJsw7JXNOt0+CBNr0OLFOdgluH9bpuPTA7vrGAa9LdQV WGUFn0B2eOiJXdGZgFKjTmjqSOSphRZndDvaDWvfVIntWto1pPmN+OAeQja4rwe2TGs0pfADE UHk692r2eDZXlkcla4UBTCcO8/6WVpKAz1QI= X-Original-Sender: stefano.babic@swupdate.org X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.126.130 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Move code from fw_printenv to livrary. libuboot_namespace_from_dt looks into DT and reads the namespace for the bootloader, if any. Signed-off-by: Stefano Babic Suggested-by: Frieder Schrempf Reviewed-by: Frieder Schrempf --- src/fw_printenv.c | 20 ++++---------------- src/libuboot.h | 9 ++++++++- src/uboot_env.c | 26 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/fw_printenv.c b/src/fw_printenv.c index 6118324..6a7a987 100644 --- a/src/fw_printenv.c +++ b/src/fw_printenv.c @@ -77,7 +77,7 @@ int main (int argc, char **argv) { char *cfgfname = NULL; char *defenvfile = NULL; char *scriptfile = NULL; - char *namespace = NULL; + const char *namespace = NULL; int c, i; int ret = 0; void *tmp; @@ -87,9 +87,6 @@ int main (int argc, char **argv) { bool noheader = false; bool default_used = false; struct uboot_version_info *version; - char dt_namespace[32]; - size_t dt_ret; - FILE *fp; /* * As old tool, there is just a tool with symbolic link @@ -148,20 +145,11 @@ int main (int argc, char **argv) { exit(1); } + if (!namespace) + namespace = libuboot_namespace_from_dt(); + if (namespace) ctx = libuboot_get_namespace(ctx, namespace); - else { - fp = fopen("/proc/device-tree/chosen/u-boot,env-config", "r"); - if(fp) { - dt_ret = fread(dt_namespace, 1, sizeof(dt_namespace) - 1, fp); - if (dt_ret) { - dt_namespace[dt_ret] = 0; - ctx = libuboot_get_namespace(ctx, dt_namespace); - } - - fclose(fp); - } - } if (!ctx) { fprintf(stderr, "Namespace %s not found\n", namespace); diff --git a/src/libuboot.h b/src/libuboot.h index 624800a..3ed3244 100644 --- a/src/libuboot.h +++ b/src/libuboot.h @@ -67,7 +67,7 @@ int libuboot_read_config(struct uboot_ctx *ctx, const char *config); */ int libuboot_read_config_ext(struct uboot_ctx **ctx, const char *config); -/** @brief Get ctx from list - this is maintained for compatibility +/** @brief Get ctx from namespace * * @param[in] ctxlist libuboot context array * @param[in] name name identifier for the single ctx @@ -75,6 +75,13 @@ int libuboot_read_config_ext(struct uboot_ctx **ctx, const char *config); */ struct uboot_ctx *libuboot_get_namespace(struct uboot_ctx *ctxlist, const char *name); +/** @brief Look for bootloader namespace from DT + * + * @param[in] ctxlist libuboot context array + * @param[in] name name identifier for the single ctx + * @return 0 in case of success, else negative value + */ +const char *libuboot_namespace_from_dt(void); /** @brief Read U-Boot environment configuration from structure * diff --git a/src/uboot_env.c b/src/uboot_env.c index b924c49..4a4ee35 100644 --- a/src/uboot_env.c +++ b/src/uboot_env.c @@ -1888,6 +1888,32 @@ struct uboot_ctx *libuboot_get_namespace(struct uboot_ctx *ctxlist, const char * return NULL; } +#define MAX_NAMESPACE_LENGTH 64 +const char *libuboot_namespace_from_dt(void) +{ + FILE *fp; + size_t dt_ret; + char *dt_namespace; + + fp = fopen("/proc/device-tree/chosen/u-boot,env-config", "r"); + if (!fp) + return NULL; + + dt_namespace = malloc(MAX_NAMESPACE_LENGTH); + if (!dt_namespace) { + fclose(fp); + return NULL; + } + dt_ret = fread(dt_namespace, 1, MAX_NAMESPACE_LENGTH - 1, fp); + fclose(fp); + if (!dt_ret) { + free(dt_namespace); + return NULL; + } + dt_namespace[dt_ret] = 0; + return dt_namespace; +} + int libuboot_initialize(struct uboot_ctx **out, struct uboot_env_device *envdevs) { struct uboot_ctx *ctx;