From patchwork Wed Oct 27 13:49:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roland Gaudig X-Patchwork-Id: 1546949 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20210112 header.b=bffsTuIk; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::237; helo=mail-lj1-x237.google.com; envelope-from=swupdate+bncbaabbe5s4wfqmgqepc5t5la@googlegroups.com; receiver=) Received: from mail-lj1-x237.google.com (mail-lj1-x237.google.com [IPv6:2a00:1450:4864:20::237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HfVSR6TVCz9t1s for ; Thu, 28 Oct 2021 00:50:15 +1100 (AEDT) Received: by mail-lj1-x237.google.com with SMTP id u21-20020a2e91d5000000b00210e16996e5sf550211ljg.5 for ; Wed, 27 Oct 2021 06:50:15 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1635342612; cv=pass; d=google.com; s=arc-20160816; b=aeTXGbElFap7R+iC6aHRiyotPM2ReCnNYiv91VU+9D++Ex/8c7SxwBbiOCYnRighc8 LDnzcSBGSYXQRayIFyktdX61i/mXEl/vafUohGzJHkw6va78K6fIdsJRTIlAlu6jVuDX VmBMgkIfsG1GMB/Iqu556KksrqPAU2wxy32hFlQkBiDkvkoCvkpIKW8cMDwRMHGywmxs ZNDt2oSJSStzfnjJ8TgRGWqGw9kOBGnugxivVFaLqTahedUMDUXLISZzOziVo+xcfF73 wueA1jbagEMQ6YE7J+d1oRTxvq/HHWVASxUCmEcwpnRsV4zQ2yrqv60zmN2X/urXLqWv 7pPA== ARC-Message-Signature: i=3; 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:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=HBzgLxavLiVKtSt13FW2TVarh2dwxSS6si2oVBXZJRM=; b=R6dK3sRrGBop+0TWnJJl0SiaW0NP7U25WWW9uRIh4vCE03VUXeejxOsR+UeHpQWfPp G3j+/DMiqRPS/gEkZpufpfIAuhOvOBdYHGbUlPzWV3bNKvOcgFjwwh+RjAN+F0t9PYm9 oUdf6L27HIhRKFyLM0yi8zX6oHmICZQlEdfDGRSbfvqj1K7grCOAPzzhAlkAJ5OhIAcc R9pL+eSowIZglwZ04IKjvYF+RjDh01NQD/gDwWF5bWc6eV8eb4OLu/+t9kyxF08bY0bq 3nHxIy3FegVsOmOJU0bEM1NIUvUMpJ1sqUJ2ZeQJ1ApY62WBXYQArhJxv3Hgf/YrWBqF BdVA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=UbwAWOYr; arc=pass (i=1 spf=pass spfdomain=weidmueller.com dkim=pass dkdomain=weidmueller.com dmarc=pass fromdomain=weidmueller.com); spf=pass (google.com: domain of roland.gaudig-oss@weidmueller.com designates 2a01:111:f400:7e1b::62f as permitted sender) smtp.mailfrom=roland.gaudig-oss@weidmueller.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=weidmueller.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=HBzgLxavLiVKtSt13FW2TVarh2dwxSS6si2oVBXZJRM=; b=bffsTuIk5uqDq2YCAGy816saNE+OkZpOEM6VpbMHF9y0c+M4B04H7S1uanagvWfggL BF74F1FSclyC4O54SRwXWreS/Q3RGgR3qk8585XkndDahPxLSLEG7TO8Xwn3ngo6jFY8 cIRj+sXR+ZV9aSM6hRyUzu8LXcu1Upq+EJp1Rgp3q6Gs9a5l5BKyWM7zG/hoEmbuorfe m5CMSFPDt+qAGOcU73ksT5xS1pEcEPCYdXqlSa46FEFF3lj5mJLk4hUJSj0geo/KcNvm ufoYAw9ELZb3yV73tZAZNuk1uYEvwuRXQno6FFza44463fHLHvpSLD/FuKAumxNQxJhk x5Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=HBzgLxavLiVKtSt13FW2TVarh2dwxSS6si2oVBXZJRM=; b=uIt6aO8UvrF1W5xoUWv3+mMHJWh7eWk0xjDzCX65AibK68GED90A9kRpLcsipsCE+l XFEYwmshZznAycDEkcXQQ8FXjB3asUxbaT3jMcWELT/PKllpdzs5HmTspUOP5wG4jKO9 avcJkWJ2HiQvBPerOKw5Wt13jsm13LUJlLhs/VYIWuffk1QLFhbWhaKarDh+XYY+0F7X a7uIxSkWiUQKCIrXeJWlHL3qxnu6Ej6Iz6W17Dbf0X24cWjKZiJMAtQoLNBq3fPvJj7d i6183ukWejdd5BSLGmoiOR7gc2a//UcFnJBWy3Mpriy9eRnGIQVjwIZOYqj8ic2diOJf uI/A== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM5306q2ZXzO04lSj8NEikRBSelgPmEfILoYEdf0cpe/CuvmlEaYXT pThTRG5ASKROvrApFSScBlE= X-Google-Smtp-Source: ABdhPJxkkthQ5tTQahlh2f1jPRRB2pd/F/vGrssDSuJgd0BOp0pgNwLGr+S+iHVDdXUvA4LYvNbkqg== X-Received: by 2002:a05:6512:e9e:: with SMTP id bi30mr21510248lfb.479.1635342612107; Wed, 27 Oct 2021 06:50:12 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a05:6512:31d4:: with SMTP id j20ls1179998lfe.2.gmail; Wed, 27 Oct 2021 06:50:11 -0700 (PDT) X-Received: by 2002:a05:6512:3341:: with SMTP id y1mr28875922lfd.378.1635342611285; Wed, 27 Oct 2021 06:50:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1635342611; cv=pass; d=google.com; s=arc-20160816; b=TclSh88arERNOv5KvadERqrdAP11Ifx0yAfnkNeiPAhilwm3l5kW+VEfIpA+hPzm6H QehxVkEb5WWkdu9PAPgbWE+NS6SR72lFCO5RSIBcUIHmP+nRpiSmV36lfl/5xUfP12Rt d65gNyx+1kF1kGi70rTDE8lz1l9D5H/5E5Yorso+QZL+huuJgwy2nR1Rr7QSWhTQ4Xoy p4l4mDXefNS+syDETlKsm/O7pvJj8goJtks6GptFjk97/XEn1WCasfyQ1dlLdG5T42mi KPmFrHf+poXRAriEtDHjTfmx1cdw8d3YvGfjTCWRyU+FiICXRI82Uhykj3vdz+QF/iA4 cp6Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Bb4PJTJ+1HD2ISf5yHIphnFRmO66gM3Oj6sXYWwZ2hI=; b=znRZQVC1AUNYCfpcFXMIUmHfitoH7nMtiiFS7saLbzD0SybtLOU9O62z8bYQWpE9Nv dISo9JLEGGQ4Y55uXut4aBtXr2/q9KSmODSGEr2QCkkNIs2OPrl+QrG86p6QMr7hyvKM Jl6E+Kpy6SxzhpBNrjErr7cX5aso9/P2oqblOLv3WQ919kvaoxO7qmJIk2MLAW7b/IcU 1+2VhAo7bVWlIrA52QAy4lkSOFxX1j1qGQtx7drJluaffh7XoLf4Rn5r6VNlY8P71Elz mECi4gnMKrBmQXuvfJXQKqqAy64NZKVbbeNMEGY61emZwMznsQVcsTWYxLSRrMwigtLy nxxg== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=UbwAWOYr; arc=pass (i=1 spf=pass spfdomain=weidmueller.com dkim=pass dkdomain=weidmueller.com dmarc=pass fromdomain=weidmueller.com); spf=pass (google.com: domain of roland.gaudig-oss@weidmueller.com designates 2a01:111:f400:7e1b::62f as permitted sender) smtp.mailfrom=roland.gaudig-oss@weidmueller.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=weidmueller.com Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2062f.outbound.protection.outlook.com. [2a01:111:f400:7e1b::62f]) by gmr-mx.google.com with ESMTPS id x78si983lff.10.2021.10.27.06.50.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Oct 2021 06:50:11 -0700 (PDT) Received-SPF: pass (google.com: domain of roland.gaudig-oss@weidmueller.com designates 2a01:111:f400:7e1b::62f as permitted sender) client-ip=2a01:111:f400:7e1b::62f; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gp57d3AeosL00b+OWqwYOlQIZlASsD+nQOwlutMJNkP/RtVw9FEwRdEQlR5MAHrG0Zf9Hmn7MVD/eVsSL1MVCuwpZHk1km6+DdNIVCpUqYTS5gIKV2QwnNb7cj93QtQNBUgDNmQyHbMpNUa77gP8MiCy5GYiCYL6zkEG+3JXsEbVrvsd0aE7MxVYbUmGO48mrPfTC4/hQBHgn8780IqKvXtgeml/ZyszQGmhHZOJjY4dPbBwq44BPKGP0EYEGxEqBgddacCIQQv1JFvV5T8pPfLb+UtHBRdd3CX52qQtRzVh3zx91jFWPfJWPOQevPrkNkucQB5WnJ++9740pv/TLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Bb4PJTJ+1HD2ISf5yHIphnFRmO66gM3Oj6sXYWwZ2hI=; b=XxAKAQPKvHcmyZmbG84x0Dgc1PeIcLPd86EpWqNpO9BugOYB3kTPgqaKQkppr2A9df1oBBvp2Bz89TqopwcVivf02HjLt7k4h5AaYTKKBCHBdRVN7KDGZyum/VcR2RuEjGM5q/IqusMnOnNcFAK/Iuixs/RU6MRpTrIRvmtB1FksMk+UBcvgSmYglEC3kPeiM7RqWKzEd27GpfvFgT37Q+3MwEeVmKc+qAqggjYPgoD3WZPgY7s+ZNdxNdnSyNtxp7ETORPo6rMnoSrA1EWTykKXlKSsfkb5if2sNqpdBOxcUbiqWsk+ow0pS1c0iKdIXIknFC0XWxmJtEI07WXN2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none Received: from AM4PR08MB2658.eurprd08.prod.outlook.com (2603:10a6:205:a::27) by AM9PR08MB5987.eurprd08.prod.outlook.com (2603:10a6:20b:2da::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Wed, 27 Oct 2021 13:50:10 +0000 Received: from AM4PR08MB2658.eurprd08.prod.outlook.com ([fe80::8821:a0b2:5af2:ae97]) by AM4PR08MB2658.eurprd08.prod.outlook.com ([fe80::8821:a0b2:5af2:ae97%4]) with mapi id 15.20.4649.015; Wed, 27 Oct 2021 13:50:10 +0000 From: Roland Gaudig To: swupdate@googlegroups.com Cc: christian.peters@weidmueller.com, sbabic@denx.de, Roland Gaudig Subject: [swupdate] [PATCH v3 8/8] suricatta: separate ipc into separate thread Date: Wed, 27 Oct 2021 13:49:52 +0000 Message-Id: <20211027134952.73063-9-roland.gaudig-oss@weidmueller.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211027134952.73063-1-roland.gaudig-oss@weidmueller.com> References: <20211027134952.73063-1-roland.gaudig-oss@weidmueller.com> X-ClientProxiedBy: AM5PR0602CA0003.eurprd06.prod.outlook.com (2603:10a6:203:a3::13) To AM4PR08MB2658.eurprd08.prod.outlook.com (2603:10a6:205:a::27) MIME-Version: 1.0 Received: from DE12086.weidmueller.com (87.129.248.106) by AM5PR0602CA0003.eurprd06.prod.outlook.com (2603:10a6:203:a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13 via Frontend Transport; Wed, 27 Oct 2021 13:50:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f6d48eec-a256-4275-ee1a-08d99950b0eb X-MS-TrafficTypeDiagnostic: AM9PR08MB5987: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2958; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TPmm7H8h+T0nTJONL+B9ifbOPafkXGgfHym7qtSC2y38ckHMu7wSB28J5PAMGtoJLGgtuJP8ZPd1M/zADEIZJ6MFFwyH1q3Fol1exNycEP2i9QoJ+W7V52PVBveawWHyImgmWSaNhEiTbz+JWWHN4OA5ArhmCsT33p6qTlo/y9r4gEm12F2GsgKP+Vs7p6IH/tUYfqXZXEybvK215hGaK8WyIXtejR5RHXXzQYF/MtXr7WtXmRZdyiIjS+RCAx5hnj70PtXZ2Q6X12VldkfqPc/YXI+Ap7mFvGAnMLe6RHowj8joB3i0y7ms+mtkX4kkH3l42eiTfC9qxlUuHi6GHI4Cw7YvPPcbDHWID+kXo9RNFOW4+/ZfJp4rNLifD1BIlHooFZM9HxKuQkkH4WD123To0QrH7+pOER7ll/SHWNXFjOMs0wSH60w6yI27rBeZSnT1UUA2o447bzpu2WOsVjJWsfJ3Tbbz0XdH6jWvzJt0sifCuH5yWR9C4rO0Zrz5mlwzE2YH3wtEhFmx8HC/W8EoXFTlgDn1GqFQKYoudLIyqqlRgSJ3WoSpS5ymqi3scX4toy86KG4i3Aqj037HKcq/VI2+El3Nlh7STrm8ETFCYdlBheggvwWfABX+um7ey8efYtMCxuuR4d4kf/eMt7KdUgOAMHLw0nwryP/Z9UDIvO1tapfnkdtvpES3gn0FKUo/abXn9+txKrV6B/TNnplcI6CG8ReBjeuDmG2I3QM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM4PR08MB2658.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(7696005)(52116002)(508600001)(86362001)(36756003)(38100700002)(38350700002)(66556008)(66476007)(6916009)(956004)(66946007)(2616005)(6486002)(30864003)(1076003)(26005)(5660300002)(8676002)(4326008)(6666004)(2906002)(186003)(83380400001)(107886003)(316002)(8936002)(544684002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: U/v+X6NNwzQXOf18fjlwsq1OLR8JZXA92TnzFPVVOgPMLtDFl1Z7kThXGoevd86Kmy2dCoIdmPGXRuaGLoTn9Y6sD/ORxzKgbZiPru1LGaC2nUXEPa8PaUpnsfVP6hELiBT9Bt9xdse2V09zshl9T0TRSPaGmvwZv9eJCWKyYxQLlpa32oI+Lsuonm/Cr+nwF7Y3JQLnUoGoVGeSaOKguH6w+cmLzWPh0LQvd//5yqCNbIS5MDVXPhftEitAq9lKUw56Kh/1edInMLcOYpXTa+ayOs0k7XnJ1+YMXMCPDrQFPPqaIsTFFNp2PpqgMJfuMSZhe32EU+1yCuhR7DlockMEk++5+fHNfvWm0LMKalNKNEjFKuYjPigECLOvAqmS/fYedFYx9StzF6DyDrDvpSGVCUQ3kCE8OxST1tfZc4M/7sdXFEQhQSCG+PdGRIRXxgcrXsyotTx8pqEkEdKlWBJdXmIZ7xvkDYN81F5aXTDHFOff58qBAbwU13VJCbl0aTwrgsMJjE4MaYBZ0qHQulKCwAMN+oUQrOlMuOAa0pFBWLX168m7sgK1i6WPNK87m+JiPzCvHhktFBOt4/Lmsb1/6JYeJHF76Fp6+wRdLwciR/7A/BNrU9V3QrbH32fZSBn5uzCNxwsrnIumtUxvJ4SuaiaZSWG6sWK7Oowfcg6tW6AB7gJC35Ne9qm/lWQQ+BE/Vf2NAc+tI10/ESdwUvjF1vjaYxUGv9U6aYbIAiJ/75/E5tzz26ZBvhxGhxAWeIuNXdnH1M8q3ZaA8wTl/awNo8rcMMTz82+XWtJOG/lJRwSwgQUtleTBaXHikRCq3CZQDeafjOeEJCt3ypDLdgai/5YH70K+KaA1/ELJNDfmVDZhuczBy+MybunY3Eu8rFUWh3wvtSxwxuWIOmufRJRztTP5XEBfs6PkENFnp5EHrunab901arGIWuzqOkHABABUmVltQOjpDKArVv7sxqs6CUYbK3aVvQqYAOH/BcAkmWghWr4G/i7mXIjf9SYRXM3FiJinjSlhMVOpX4TR0q/k4bi25Qmnt4AOGTGJqdmyymAYkBOmBusv+NejmD6FlhuaIFNu3PebST5clYpNKh7wPpPMJHXG8odTMDU1+dOqe3rDqGLqz81npS9XhLfl7hA1gYhttRxF2zEC2WeosbKD1e9z9TqIBhYh04okwb23bUBev326csOuJVxWrvIU9RaL8DuH/vOYr+evVHPTRUUjLSdz7HHGNoDmMHJizhVVah5qwPzDmA9vNGwAVbVtTMoe72ygf5vx1DlFum/VEsj8fGGN/7nFujFDS6Oj0u5LkmtzaNDGJ7iQeHEA+r/GFPS+L+MufA9Xmbo53obbaib0TyxdMiMz1k6L6AIkiqAEE5i4T+3JHoa23zJ+0DIsEu+UnXPQMEfOTyZcwHhr40FAnWzStwvmaDyXHIwwlBqZ7qhbDIwo5kJHaqZRKmslM5Z3VSRjMIV/kyx5oFEZqM6v2CfEkVN4q+6Acd1kcPVy46dmZuaEuaTltaunDGbpxYSXEnLrkmdpDlq0VJuP3P+BsG+D/44YiUwv43qw+ebz0iabEeT2rkDQAU4LO4aYJjpYiRjqmfuMBBLDw2nzvgOy0P+81Y7BrQdRMfq1OnQ= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6d48eec-a256-4275-ee1a-08d99950b0eb X-MS-Exchange-CrossTenant-AuthSource: AM4PR08MB2658.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2021 13:50:09.6379 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aLaLSbJgQP5M6ab3s2pHM3Y6Zvl5HsBAz1mU5SWTT7IB3aR4Vt+OU+yZUpZGhPsNJGHya1dwLq3oA8KCC93MMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5987 X-Original-Sender: roland.gaudig-oss@weidmueller.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=UbwAWOYr; arc=pass (i=1 spf=pass spfdomain=weidmueller.com dkim=pass dkdomain=weidmueller.com dmarc=pass fromdomain=weidmueller.com); spf=pass (google.com: domain of roland.gaudig-oss@weidmueller.com designates 2a01:111:f400:7e1b::62f as permitted sender) smtp.mailfrom=roland.gaudig-oss@weidmueller.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=weidmueller.com 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: , From: Roland Gaudig In case of problems with the network connection to the hawkBit server some requests may take a very long time. During that time also calls to the server IPC are not answered. Therefore, the server IPC functions are moved into a separate thread. Signed-off-by: Roland Gaudig --- (no changes since v1) include/channel_op_res.h | 3 +- suricatta/common.c | 1 + suricatta/server_hawkbit.c | 32 +++++++++++- suricatta/suricatta.c | 99 +++++++++++++++++++++++++++----------- 4 files changed, 105 insertions(+), 30 deletions(-) diff --git a/include/channel_op_res.h b/include/channel_op_res.h index 104ce32..3612305 100644 --- a/include/channel_op_res.h +++ b/include/channel_op_res.h @@ -25,5 +25,6 @@ typedef enum { CHANNEL_ENOTFOUND, CHANNEL_EREDIRECT, CHANNEL_ESSLCERT, - CHANNEL_ESSLCONNECT + CHANNEL_ESSLCONNECT, + CHANNEL_REQUEST_PENDING, } channel_op_res_t; diff --git a/suricatta/common.c b/suricatta/common.c index 3a9ac60..28c5e94 100644 --- a/suricatta/common.c +++ b/suricatta/common.c @@ -58,6 +58,7 @@ server_op_res_t map_channel_retcode(channel_op_res_t response) case CHANNEL_EAGAIN: case CHANNEL_ESSLCERT: case CHANNEL_ESSLCONNECT: + case CHANNEL_REQUEST_PENDING: return SERVER_EAGAIN; case CHANNEL_EACCES: return SERVER_EACCES; diff --git a/suricatta/server_hawkbit.c b/suricatta/server_hawkbit.c index 0428847..dbce9a3 100644 --- a/suricatta/server_hawkbit.c +++ b/suricatta/server_hawkbit.c @@ -58,6 +58,7 @@ static struct option long_options[] = { static unsigned short mandatory_argument_count = 0; static pthread_mutex_t notifylock = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t ipc_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; /* * See hawkBit's API for an explanation @@ -521,15 +522,25 @@ server_op_res_t server_set_config_data(json_object *json_root) tmp = json_get_data_url(json_root, "configData"); if (tmp != NULL) { + pthread_mutex_lock(&ipc_lock); if (server_hawkbit.configData_url) free(server_hawkbit.configData_url); server_hawkbit.configData_url = tmp; server_hawkbit.has_to_send_configData = (get_target_data_length() > 0) ? true : false; TRACE("ConfigData: %s", server_hawkbit.configData_url); + pthread_mutex_unlock(&ipc_lock); } return SERVER_OK; } +static void report_server_status(int server_status) +{ + pthread_mutex_lock(&ipc_lock); + server_hawkbit.server_status = server_status; + server_hawkbit.server_status_time = time(NULL); + pthread_mutex_unlock(&ipc_lock); +} + static server_op_res_t server_get_device_info(channel_t *channel, channel_data_t *channel_data) { assert(channel != NULL); @@ -551,8 +562,7 @@ static server_op_res_t server_get_device_info(channel_t *channel, channel_data_t channel_op_res_t ch_response = channel->get(channel, (void *)channel_data); - server_hawkbit.server_status = ch_response; - server_hawkbit.server_status_time = time(NULL); + report_server_status(ch_response); if ((result = map_channel_retcode(ch_response)) != SERVER_OK) { goto cleanup; @@ -1466,12 +1476,14 @@ int get_target_data_length(void) int len = 0; struct dict_entry *entry; + pthread_mutex_lock(&ipc_lock); LIST_FOREACH(entry, &server_hawkbit.configdata, next) { char *key = dict_entry_get_key(entry); char *value = dict_entry_get_value(entry); len += strlen(key) + strlen(value) + strlen (" : ") + 6; } + pthread_mutex_unlock(&ipc_lock); return len; } @@ -1506,6 +1518,7 @@ server_op_res_t server_send_target_data(void) ); char *keyvalue = NULL; + pthread_mutex_lock(&ipc_lock); LIST_FOREACH(entry, &server_hawkbit.configdata, next) { char *key = dict_entry_get_key(entry); char *value = dict_entry_get_value(entry); @@ -1517,6 +1530,7 @@ server_op_res_t server_send_target_data(void) value)) { ERROR("hawkBit server reply cannot be sent because of OOM."); result = SERVER_EINIT; + pthread_mutex_unlock(&ipc_lock); goto cleanup; } first = false; @@ -1525,6 +1539,7 @@ server_op_res_t server_send_target_data(void) free(keyvalue); } + pthread_mutex_unlock(&ipc_lock); TRACE("CONFIGDATA=%s", configData); @@ -1678,6 +1693,7 @@ server_op_res_t server_start(char *fname, int argc, char *argv[]) mandatory_argument_count = 0; + pthread_mutex_lock(&ipc_lock); LIST_INIT(&server_hawkbit.configdata); LIST_INIT(&server_hawkbit.httpheaders); @@ -1702,6 +1718,7 @@ server_op_res_t server_start(char *fname, int argc, char *argv[]) } swupdate_cfg_destroy(&handle); } + pthread_mutex_unlock(&ipc_lock); if (loglevel >= DEBUGLEVEL) { server_hawkbit.debug = true; @@ -1875,6 +1892,13 @@ server_op_res_t server_start(char *fname, int argc, char *argv[]) */ server_hawkbit.has_to_send_configData = true; + /* + * The following loop might block for a long time, if server does + * not respond immediately. Therefore, report pending request on + * server status IPC. + */ + report_server_status(CHANNEL_REQUEST_PENDING); + /* * If in WAIT state, the updated was finished * by an external process and we have to wait for it @@ -2039,6 +2063,7 @@ static server_op_res_t server_configuration_ipc(ipc_message *msg) json_data = json_get_path_key( json_root, (const char *[]){"polling", NULL}); + pthread_mutex_lock(&ipc_lock); if (json_data) { polling = json_object_get_int(json_data); if (polling > 0) { @@ -2056,6 +2081,7 @@ static server_op_res_t server_configuration_ipc(ipc_message *msg) server_hawkbit.has_to_send_configData = true; } + pthread_mutex_unlock(&ipc_lock); return SERVER_OK; } @@ -2066,11 +2092,13 @@ static server_op_res_t server_status_ipc(ipc_message *msg) .tv_usec = 0 }; + pthread_mutex_lock(&ipc_lock); sprintf(msg->data.procmsg.buf, "{\"server\":{\"status\":%d,\"time\":\"%s\"}}", server_hawkbit.server_status, swupdate_time_iso8601(&tv)); msg->data.procmsg.len = strlen(msg->data.procmsg.buf); + pthread_mutex_unlock(&ipc_lock); return SERVER_OK; } diff --git a/suricatta/suricatta.c b/suricatta/suricatta.c index 29bba2e..a50236b 100644 --- a/suricatta/suricatta.c +++ b/suricatta/suricatta.c @@ -11,7 +11,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -29,6 +31,7 @@ static struct option long_options[] = { {"enable", no_argument, NULL, 'e'}, {"disable", no_argument, NULL, 'd'}, {NULL, 0, NULL, 0}}; +static sem_t suricatta_enable_sema; void suricatta_print_help(void) { @@ -58,6 +61,8 @@ static server_op_res_t suricatta_enable(ipc_message *msg) json_root, (const char *[]){"enable", NULL}); if (json_data) { enable = json_object_get_boolean(json_data); + if (sem_post(&suricatta_enable_sema)) + ERROR("sem_post enable failled"); TRACE ("suricatta mode %sabled", enable ? "en" : "dis"); } else { @@ -72,6 +77,8 @@ static server_op_res_t suricatta_enable(ipc_message *msg) json_root, (const char *[]){"trigger", NULL}); if (json_data) { trigger = json_object_get_boolean(json_data); + if (sem_post(&suricatta_enable_sema)) + ERROR("sem_post trigger failled"); TRACE ("suricatta polling trigger received, checking on server"); } @@ -82,7 +89,7 @@ static server_op_res_t suricatta_enable(ipc_message *msg) return SERVER_OK; } -static server_op_res_t suricatta_ipc(int fd, time_t *seconds) +static server_op_res_t suricatta_ipc(int fd) { ipc_message msg; server_op_res_t result = SERVER_OK; @@ -91,18 +98,9 @@ static server_op_res_t suricatta_ipc(int fd, time_t *seconds) ret = read(fd, &msg, sizeof(msg)); if (ret != sizeof(msg)) return SERVER_EERR; - switch (msg.data.procmsg.cmd) { case CMD_ENABLE: result = suricatta_enable(&msg); - /* - * Note: enable works as trigger, too. - * After enable is set, suricatta will try to contact - * the server to check for pending action - * This is done by resetting the number of seconds to - * wait for. - */ - *seconds = 0; break; default: result = server.ipc(&msg); @@ -127,30 +125,67 @@ static int suricatta_settings(void *elem, void __attribute__ ((__unused__)) *da int suricatta_wait(int seconds) { - fd_set readfds; - struct timeval tv; + struct timespec tp; int retval; + int enable_entry = enable; - tv.tv_sec = seconds; - tv.tv_usec = 0; - FD_ZERO(&readfds); - FD_SET(sw_sockfd, &readfds); - DEBUG("Sleeping for %ld seconds.", tv.tv_sec); - retval = select(sw_sockfd + 1, &readfds, NULL, NULL, &tv); - if (retval < 0) { - TRACE("Suricatta awakened because of: %s", strerror(errno)); - return 0; - } - if (retval && FD_ISSET(sw_sockfd, &readfds)) { - TRACE("Suricatta woke up for IPC at %ld seconds", tv.tv_sec); - if (suricatta_ipc(sw_sockfd, &tv.tv_sec) != SERVER_OK){ - DEBUG("Handling IPC failed!"); + clock_gettime(CLOCK_REALTIME, &tp); + int t_entry = tp.tv_sec; + + tp.tv_sec += seconds; + DEBUG("Sleeping for %d seconds.", seconds); + retval = sem_timedwait(&suricatta_enable_sema, &tp); + + if (retval) { + if (errno != ETIMEDOUT) { + TRACE("Suricatta awakened because of: %s", strerror(errno)); + return 0; } - return (int)tv.tv_sec; + /* else: Suricatta awakened because timeout expired */ + } else { + /* suricatta_enable_sema unlocked */ + time_t t_wake = time(NULL); + + TRACE("Suricatta woke up for IPC at %ld seconds", t_wake - t_entry); + /* + * Note: enable works as trigger, too. + * After enable is set, suricatta will try to contact + * the server to check for pending action + * This is done by resetting the number of seconds to + * wait for. + */ + if (trigger || (enable && !enable_entry)) + return 0; + else + return seconds - (t_wake - t_entry); } + return 0; } +static void *ipc_thread(void __attribute__ ((__unused__)) *data) +{ + fd_set readfds; + int retval; + + while (1) { + FD_ZERO(&readfds); + FD_SET(sw_sockfd, &readfds); + retval = select(sw_sockfd + 1, &readfds, NULL, NULL, NULL); + + if (retval < 0) { + TRACE("Suricatta IPC awakened because of: %s", strerror(errno)); + return 0; + } + + if (retval && FD_ISSET(sw_sockfd, &readfds)) { + if (suricatta_ipc(sw_sockfd) != SERVER_OK) { + DEBUG("Handling IPC failed!"); + } + } + } +} + int start_suricatta(const char *cfgfname, int argc, char *argv[]) { int action_id; @@ -206,6 +241,16 @@ int start_suricatta(const char *cfgfname, int argc, char *argv[]) } } + if (sem_init(&suricatta_enable_sema, 0, 0)) { + ERROR("Initialising suricatta enable semaphore failed"); + exit(EXIT_FAILURE); + } + + /* + * Start ipc thread here, because the following server.start might block + */ + start_thread(ipc_thread, NULL); + /* * Now start a specific implementation of the server */