From patchwork Tue Oct 26 08:41:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roland Gaudig X-Patchwork-Id: 1546331 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=K4uda0mz; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2607:f8b0:4864:20::93e; helo=mail-ua1-x93e.google.com; envelope-from=swupdate+bncbaabbwx632fqmgqeqlvueda@googlegroups.com; receiver=) Received: from mail-ua1-x93e.google.com (mail-ua1-x93e.google.com [IPv6:2607:f8b0:4864:20::93e]) (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 4HdlgJ6fx4z9sfG for ; Tue, 26 Oct 2021 19:42:04 +1100 (AEDT) Received: by mail-ua1-x93e.google.com with SMTP id o6-20020ab01506000000b002cbb1771ce6sf1289396uae.15 for ; Tue, 26 Oct 2021 01:42:04 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1635237722; cv=pass; d=google.com; s=arc-20160816; b=r9M+50Ot/91OM4uMk6gE8WrRXKHCcjDlmyhYhnkphNKZlqPbsvkShZecu+li/Lc89e Ymnowc886NZwWUzlEKb6MMS/9lrnjEf6W7InOk4vSOJhjN15NJECc7rvr9adU8+h3ahY NdGmZr44sNgRFQhkUAWSuZVLisPY9aneU8o0027l5rq4lgGMmriuhxLYSXFZFe6x8o1Q FAhwi6qXQ1ItudTwbUptFeSpK+lE9/Wkl8Yk6IY8DvJ3xwaaUNg1HR3oTKFa2z5uY3nb O0yHY+8bbricjQq22o2xDan960dMucYMU3tffFRY4h7xV3A5xhWbuwgTWYYBl06v8L/D HW1Q== 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=elDVlVGv398KFkpi5H7OdtzVTbbgKaBWH82c087GStk=; b=WKdlzpgmdcJnoiLTbIbwi0IHcRnYwJqZRMFvMEzo5SzFk7KnlcN5pD7l/IcBQwWDib BDFym2+0zzTproSy0dRmgt5zvjuy2alUaCrGv38reYe8IDWr+P0gkes1p0NbhyUhP21+ Zn7A+mUtTJ7aLgU97VOh8UiGHB+DLHW3ARwWksVEbsBiF01f3o4FXMnAViJHQ2r9SqkL f2/4txijPNxvYoXddqH0YILbM+yLocOQ6iF3HKX6pj098fCQtAAevFd4TQ8DmSf2Llhh a/AxWX8pBkYHqFn+wQ1gFWmn6UfwUKgXqds8hVd4tJp3shnDFwjvmihZp6C6YCh0im6X QBXQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=hrQBB8Yf; 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 40.107.6.56 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=elDVlVGv398KFkpi5H7OdtzVTbbgKaBWH82c087GStk=; b=K4uda0mzhZtPGCe/7rynjZeCw4SU2t+Xt8albCD9/DIgMgUAuxD7knzMhRFdJW8i5d mYxttQ4oSX2jUdsBBW2U3LwlL4V788bPl3ICwMsXboEB+122URp4E/cjEu/wZ6UAQFvX h9Ruh1uYCBk+3zZ4KoR0zGGj6l6x0C2LHu/y3kh+3RRXDj7jlPh5JHLe77PpWgOKToY3 PTSUcxdGi1qp4pT+7tcag03wYPeR2yuxBtrFRYO5Ag6WDJABLDcvdFr1UxpoPM5zccnr YLPy/FQS+wvsITy20Vc3aCgrZ/GkbeVa5xEYVTuTWrUcM0aFjcFiwGbs30LkgjD3Nnhq cDtQ== 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=elDVlVGv398KFkpi5H7OdtzVTbbgKaBWH82c087GStk=; b=7QO2176Uyw8xztxHbs3/tfkdBu4BnhV+0TvsZhHi97H7ks90JUlgk71sP7DDgUfUeP aWXD0nXQlsb6ypvPlY68YRaq5HLXE93fRUvbDJygpX9/uqCW+HDzl8eSIiKFQUQ2HUBo ig6mReMJxKs4PIBiGmTtOBpyCq/jiO3c43GsrWMlkbCBrG/P77okcEFw3kf8PIRULtPe MSRDnR6u782fXjeG2ZW9QW1EqPsCXDm/gJRA2zC9z/lx68sKYPXYZCQEaavPzUfclQin Ey5yLJXpN6dIl1fQYbcP6wLiEdifQ40RtLDch3lssCgAld+PprTqYjg0VPZnG47AMcjy 5sHQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM532FvOwpJEe8K0pKi4aSIOOha8egVw2S37Qzy1cvj4fYqoxsrK9B gfY6OoYPa+xFF3ZjpCmnI1c= X-Google-Smtp-Source: ABdhPJx40L53p8v+UxB0p2AEBed4TQVTveMSgEkSxZiLk3uJt3nhVWN1kjO8l/658JhIrsQWaG0WCA== X-Received: by 2002:a67:884:: with SMTP id 126mr21370868vsi.34.1635237722423; Tue, 26 Oct 2021 01:42:02 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a67:b009:: with SMTP id z9ls6300758vse.10.gmail; Tue, 26 Oct 2021 01:42:02 -0700 (PDT) X-Received: by 2002:a05:6102:160d:: with SMTP id cu13mr16595512vsb.55.1635237722005; Tue, 26 Oct 2021 01:42:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1635237722; cv=pass; d=google.com; s=arc-20160816; b=0BYDrpH8F/UYdCcFQxFClonRLUl4icT+4QcrYGoDPj/0n9dVbxGxzMFBF0SYgdpT+K bUHddBYMaO7WiRbafvIlk0cMjCK9dEiQoUmH5T0Ea8PeboU13WFj9gQKOPZghMSPSSzF faVxjyuFqTcjcBbFnm/M0URgd4JPDlreF5l/PhhZQu7b+U2KZj8LeFtQAT85WfvCjWcx i2ZPa0XHmMxHCZjwVbd1jHrB4AtCqPb6MXPUWK6bTL8BbCjk7vlDA4LggFHaIkE4JuQ/ WG7uaRscdCAUkKRybOBTuj6XRwSVHnMFeWEup0m5WGNGOB75XPN2TTdVzWLbMKnlWoRb nwBQ== 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=BtWfvDopdeVL92ca6ACbpttiiaQq6SfF9g4oFHGO4VaYUcJjRHfexXv4ko+NQDMiZJ e0BV5Gt7+MS0pwh+n6nvP+t0zoiZ8jhCkNIFWPSj0MSsgr6SP0l4mHwffKVcE1Mvt+5a dMxEv35GiI4CzxVF1HmZbCViaZn1U7cJvo3HwTsusW08ZVcQTNzylSuXxHPHFSej/Z3k 7QfAJuchainugebsDjDRe4ly1mdVMIyYISrjy/EBQuuY4xraj5QtPkip33dL0QUtR5fc fwNqcD4cIhpOY/DxAcQi8BsKu7NUepx0W4/aFh/mJ5U9s08VjpkZnNaB1F1qZe3yCqkr o2Uw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=hrQBB8Yf; 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 40.107.6.56 as permitted sender) smtp.mailfrom=roland.gaudig-oss@weidmueller.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=weidmueller.com Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60056.outbound.protection.outlook.com. [40.107.6.56]) by gmr-mx.google.com with ESMTPS id r11si595163vsk.1.2021.10.26.01.42.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Oct 2021 01:42:01 -0700 (PDT) Received-SPF: pass (google.com: domain of roland.gaudig-oss@weidmueller.com designates 40.107.6.56 as permitted sender) client-ip=40.107.6.56; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Lq4xkz/9O06OlWD8YSDnjAJH5705S9exQFUmJ4l0WnkUqhKXC670KnZnPrt9EZGCDzGM7Hkj2Cn4RhKUlEmFTxWmi+Wp/lkt2ht7EfZEvhxeuoUi0K/8KMST5zrg4xd2VmI1a7Mirgc7vzBT5M7VHXyk5//VMZnf8FACL+mz4qRWyTepiM1aeMWEfIw8G3scjABO+cimnkz9W0eN4xYrhBtzNeCtFCc8zguvX4w71LHz/waJid3rNG6FI0V0GptXh8syUuB6u2QPbC+rIgne6wptY42B/OjFCfsiRGQpTXBr2u6RUhRZcKRZw8xn71lU9FjO7HhwLC56P6TFLBjKXQ== 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=d+kq+tshOzn0P1f9TseALOqLQeo/PKZ/IBAzeE+tiuEKcRcaIGDx/stAjayauvJTSbOyHxmjibm1bE+YpFFPoEKboWCy64ltuaLfASZMj77JoO4xMYyJImWlgPTwFy5KYp90MmymC+yFowf6s29W+aFFHtAlJVWdbvL2Y0SdOiohXxX5vrAutwMsgqtdGMm4cvCQQYknzUu/VcneCPD3+aiZilZYb+diBAkPFJbkqouuKH0ViIwuZBXsi4zfdG5opemlH5qxmnWXjTCxfWNbH9wPt5BsQAFMiy8Z4ECgoOtsN4qJ2rxrbIsey/vFF6b2KlizUnMX1BWUWzZA2sjvPg== 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 VI1PR08MB2669.eurprd08.prod.outlook.com (2603:10a6:802:18::25) by VE1PR08MB5806.eurprd08.prod.outlook.com (2603:10a6:800:1b1::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Tue, 26 Oct 2021 08:42:00 +0000 Received: from VI1PR08MB2669.eurprd08.prod.outlook.com ([fe80::740a:956f:ea7b:7f8b]) by VI1PR08MB2669.eurprd08.prod.outlook.com ([fe80::740a:956f:ea7b:7f8b%5]) with mapi id 15.20.4628.020; Tue, 26 Oct 2021 08:42:00 +0000 From: Roland Gaudig To: swupdate@googlegroups.com Cc: sbabic@denx.de, christian.peters@weidmueller.com, Roland Gaudig Subject: [swupdate] [PATCH v2 8/8] suricatta: separate ipc into separate thread Date: Tue, 26 Oct 2021 08:41:37 +0000 Message-Id: <20211026084138.20087-9-roland.gaudig-oss@weidmueller.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211026084138.20087-1-roland.gaudig-oss@weidmueller.com> References: <20211026084138.20087-1-roland.gaudig-oss@weidmueller.com> X-ClientProxiedBy: AM5PR1001CA0027.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::40) To VI1PR08MB2669.eurprd08.prod.outlook.com (2603:10a6:802:18::25) MIME-Version: 1.0 Received: from DE12086.weidmueller.com (87.129.248.106) by AM5PR1001CA0027.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18 via Frontend Transport; Tue, 26 Oct 2021 08:42:00 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 06eb3caa-63be-4a47-7826-08d9985c7a57 X-MS-TrafficTypeDiagnostic: VE1PR08MB5806: 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: yvf3UrlL2cHW5Q3Zqo8OU7oP5aIZYRVGTMeOy0u5jVj2EwG8V73k/vD/rEqGxHtPpVaodYUYRYsSrXGQG+xTIJbOG0n6d7QG4VFcn3TxYcrRJNSj6Ii9yoJcrqw9rLkQ/ILvqQZVb/qDtjG53gTt40Znyph6jhZAHU6ZzrqXncDd/mY7DIQFh+NOybjN1t1DaXw6UBSDj6tJvaoG5xD6MHhKzim6NNb4rgxkEQqD3hgwsuxM+2sxc2YuxXQLYJNdjnt0AkgANcog/e1mCN2BijU6pKGAnMWkrH2C1pbGh0oYgq1kNVX+yVZFsvokrFGEW/6bQ0ecZWTANIfpxSTfPzmuUyZRLBF5UQLktHLAVkKrdlqNuRFXrYb1qjuOl7atm7ZSzgGuvTYSoHzJ1ROBCqe1GPK1udOP/xv4UXpzh/PNbjoPbsbY837cW3Bp6By5YCbyKId4eVuzmCiarcKQcv1fklXhVxIqJWyFirY4fu/xEXqOa2cU3whbzXCAY34nTZprAOxNgtx7F14bprHRGsGO4SshpGoeKXY/FeZMIWxPjJ7jUEApdZYQn2kFhSy/U9bg9VDtI6fIMrBbGKP4i3t2nee1PfEbLSTXmgq+uOXvkVzupSDp3KDrXmqFAYsiioz+Ihp5tsZvwCGNjGucnqWthQ+5xdhidXWoQr8liHgfmZlw2spkPACH8V7+/awpDak+iNm04KNnVBghAv08O3mDUvSu1eBRbWO/BwIdj9o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB2669.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(956004)(1076003)(2906002)(8676002)(107886003)(5660300002)(52116002)(186003)(66946007)(508600001)(6916009)(36756003)(86362001)(26005)(316002)(8936002)(7696005)(66556008)(66476007)(4326008)(6666004)(30864003)(6486002)(38350700002)(38100700002)(83380400001)(2616005)(544684002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Okm+YB0lpSXq2CJR5ngyZsqjLQa46Q/ZyxKmZMy001NJ1eLmYIC5Bdsu147zLVrCvb7j3nu8G82R2lecIzOkC845ig9PTqUhGgCXgvPN/NtZLdMJXpgkpOnV0b5W2AngT5H8SFJp1lRVm0H4H+OEze4heZyOIGmcjh0ecjyoRaPoeTTCknsQlyGyV2Xls2SMXed3kJVBrJkpDe/H8q1aCuCXPmIAj3JcPXZGCSmKVIHlTLezx5yecCafoWk3ks1b9DoggoMDfjuqKS3AchWLnbCVi1bqVEL/uSki7+BmCjinmx9AP3zrz3uW6t+yahz74TNElIBTv+TKnglULdGBqxuItSloj+bJa7sVUKKSf8kcXF6wbj6xK9qqplF4DDXUq9hMPAXVSK/niKzsirXq5NKamgRGELrckn8yJ22EgZuhjS1cW0r0aj5K195C5MkrAXlsvEqy7qzEjXqaXBu5WHOBDNf6ssXV7E2YzECuXgbT+f1+rSp3UroPenFc4vii+UT5N1SUy+nMezy5CeLwllV1qS4sBL14GAIoVfy0K7bjH2ltJ9GEQxUcjybTDkDNx2zpWIXHys0iWveqFVOCgdBuYF4S+NTv+KK3hLqtdCZ3ezRPDnrZjnC1K9iO//vwOay+84INH5N9NB/KSfcpLGsiQ8T5pQUI1ujCYWXAlYIt0etNpEgwNDasCeBO74wcJnBN10s38mz7fZctzCXYAaKgMRr5l2gaOaxbBpJRe+wX3Kv9ubSnXtguVOxUBMzDV5lc8LESbEqcu1j+o9csIbkYleNHAyRAUN7LlaW65uflaPuzsAjNLZ6ye5/VG6m6mP86W7aU8evMprPmQd4pb7l0CoZG1OtOrJholca9yhUyvG91KhNzuA3quyfNKTl4bbAOe0KJldZeYTy4ViSExCs6rL4USgod5RMnCVKhNxK9qWeFBxx3IwXSDbdTSg2kgV+Nqr7fej7HkHKppW60QqffpDHQAQaib1ayY7r6S23raLDE7L3q/9WCegScYFUm/w+nv42UV1beiTpL2Ft/E3NAcRjMQruidmP1w5Rdq5IH6kw6zLYmLxR7dkOuCmRPibnpj2yiGZD/KKgvhM3VS4F3xkOEJfBDg47nTK2GxfuhBxFLN3rLwNE9Xpyhm6kh7ZgHUaCjdstuvSkTXQpD4Wva/KFU/JIkVd1xUy9oP+BYkjH0Y31hxfIGgheF7q194VxeHfo353MiBBKV88Bm8Fzi4olcvxjFl+fEt2PFuKFgQDKph44PsL4xPHIaNTZRD5K0IkqUk9FO2kzGqKpAy+3OEPvspjLGLgqUHpxWrm97nLcgXwNS8aHfDggmXRHifZ1xZQuwZltF442QygDIopDUA5LxRG1CmTUFT1+U4/sEvlVWveU3K8ixaCwtZPdv+e2+Oy5RUzH2TyyvFY8Lc8vISFYI/Zdgr6MQUvoVhpQhuXi097D45LwbydfP9OrsoAqQwutkISv+m3WthwAfw4YlKo1e/KZ+QOmEqAI91Gsh2O4ajonvjhGefYeDEbiohshdTAsWs1AdWOiVqTRj9Jb/VU99n04Z4TphOjBuq3T5fSkIswXHZYO1dRUl2CDJS3RbEAIvfz6ycWSl+VlElemasLYgh6IRVlNyeArVMrA= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06eb3caa-63be-4a47-7826-08d9985c7a57 X-MS-Exchange-CrossTenant-AuthSource: VI1PR08MB2669.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2021 08:42:00.8310 (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: fxC907KKsFiGaHvV8e+LAzRB1acJaalL3pD6niRl9M0LRBlxaI8gGHCNYpHZf+DkhKd9r7ib7ZElbFWgjBCvPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5806 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=hrQBB8Yf; 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 40.107.6.56 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 */