From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A3CB8A00C5; Mon, 19 Dec 2022 21:23:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3A8FB40685; Mon, 19 Dec 2022 21:23:54 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 1458D40395 for ; Mon, 19 Dec 2022 21:23:52 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BJGWq6S009693; Mon, 19 Dec 2022 12:23:52 -0800 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2100.outbound.protection.outlook.com [104.47.55.100]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3mjnanu2jw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 19 Dec 2022 12:23:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n4hxoQTGsL77Zy8SmOPOAW89I3DrqAMTG9Kt7jyt/eqNuDZ8NMZDCykg9uz3Nm18aUriFXTBb4jyed61XrYrzE8l82B6AWCcdXA3E/bV7r7iev1cCQQt/gsPSAFQVhjH+acftbyaf6O9fa1hWaoA3SSEtcSZTGP+OhA2C0R32trw+QISTaj/e3jd5ai1kdWJpDpgYRnSQiPgM0QzlISHqYkqQw/UQR6FIeMkiEzLK+07DxNEkH7SH5vSxxgmnfaWUGAodHou3x8rO2zhy55m+CRbrPboBA6diN4SNx+TXYGdPJxX4vjUgB0mh6sda6661VuLl7jC0s2lPJ88BRbeKg== 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=fZ+aj9v/0nWvPtpze0F7Bg6QsiIGnw1tZAbmwUtM61c=; b=UCDFKRuOG59Ca9D1uIUC6n88gOGgdlQjMr+00/Y2LBzIzZOuydpVweDMB24X38D1RKveDZIOX53HJ7GX18KoRADpUn7wc1YVatwVuzxLL4cKYTHqK7idQOt4zTSUBNKIHIhiG/dWDmvz9gH7TJD1QC40D8Ef3wzMjIdK115+Qg6RlD9Ga7xGGqjmiAOeiUOETVUguLcNiTTW49xNmYnS2nlUKYBrUicdIbk6/VtYbzzFh9Yd7qyGayKLHQWF0X9PqJIn1d1VQVkujQrSIO22k1EozA5mEoPZV52kk5K/NVO7A7ibkCjjBaJ6K7hs6v8yEc5rgxaC6O/9W1puOpscBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fZ+aj9v/0nWvPtpze0F7Bg6QsiIGnw1tZAbmwUtM61c=; b=d9RZtaa7Sm9rJz+powcSYGVgl0wtZ0YDaNEYL1HihNMvAHmEWG6uYzzMT4JzMo78GCaYLSZx2m3JZ4tVAe6r8ndqq3AbJMHjGIGxFaBdI68reuXuUeQjEiAnv/fW1Y9XD0gwLVpFCloGcXQVH+2jXwI/msYQkID8oQWzocb+54U= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB4736.namprd18.prod.outlook.com (2603:10b6:510:cf::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Mon, 19 Dec 2022 20:23:49 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::ef99:d384:6340:8c5b]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::ef99:d384:6340:8c5b%5]) with mapi id 15.20.5924.016; Mon, 19 Dec 2022 20:23:49 +0000 From: Pavan Nikhilesh Bhagavatula To: Erik Gabriel Carrillo , Jerin Jacob Kollanukkaran CC: "hofors@lysator.liu.se" , "s.v.naga.harish.k@intel.com" , "jay.jayatheerthan@intel.com" , Shijith Thotton , "dev@dpdk.org" Subject: RE: [EXT] [PATCH v2] eventdev/timer: add API to get remaining ticks Thread-Topic: [EXT] [PATCH v2] eventdev/timer: add API to get remaining ticks Thread-Index: AQHZE+RdNy2eNNVMhE2TI71ljp+0FK51p6uw Date: Mon, 19 Dec 2022 20:23:48 +0000 Message-ID: References: <20221219195900.2389529-1-erik.g.carrillo@intel.com> In-Reply-To: <20221219195900.2389529-1-erik.g.carrillo@intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: =?us-ascii?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGJoYWdhdmF0?= =?us-ascii?Q?dWxhXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02?= =?us-ascii?Q?Yjg0YmEyOWUzNWJcbXNnc1xtc2ctMDk4MTg5M2QtN2ZkYi0xMWVkLWI2YzIt?= =?us-ascii?Q?NGMwMzRmNWZhYTM2XGFtZS10ZXN0XDA5ODE4OTNmLTdmZGItMTFlZC1iNmMy?= =?us-ascii?Q?LTRjMDM0ZjVmYWEzNmJvZHkudHh0IiBzej0iMTAzNTAiIHQ9IjEzMzE1OTU1?= =?us-ascii?Q?MDI2MjU1OTI2OCIgaD0iZ1lKUnhBSUFmb0YxbENWNy9rRnVKcmphM3dJPSIg?= =?us-ascii?Q?aWQ9IiIgYmw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTkNnVUFB?= =?us-ascii?Q?TmdIQUFBa3d0bkw1eFBaQWFSQ1QxSmUyc2JEcEVKUFVsN2F4c01NQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUhBQUFBQm9Cd0FBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUVBQVFBQkFBQUEzVHpGQUFBQUFBQUFBQUFBQUFBQUFKNEFBQUJo?= =?us-ascii?Q?QUdRQVpBQnlBR1VBY3dCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHTUFkUUJ6QUhRQWJ3QnRB?= =?us-ascii?Q?RjhBY0FCbEFISUFjd0J2QUc0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFB?= =?us-ascii?Q?QUFDQUFBQUFBQ2VBQUFBWXdCMUFITUFkQUJ2QUcwQVh3QndBR2dBYndCdUFH?= =?us-ascii?Q?VUFiZ0IxQUcwQVlnQmxBSElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFB?= =?us-ascii?Q?QmpBSFVBY3dCMEFHOEFiUUJmQUhNQWN3QnVBRjhBWkFCaEFITUFhQUJmQUhZ?= =?us-ascii?Q?QU1BQXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refone: =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFu?= =?us-ascii?Q?Z0FBQUdNQWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnJBR1VBZVFCM0FH?= =?us-ascii?Q?OEFjZ0JrQUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFZd0IxQUhNQWRB?= =?us-ascii?Q?QnZBRzBBWHdCekFITUFiZ0JmQUc0QWJ3QmtBR1VBYkFCcEFHMEFhUUIwQUdV?= =?us-ascii?Q?QWNnQmZBSFlBTUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFB?= =?us-ascii?Q?QUFBQUFBQUFJQUFBQUFBSjRBQUFCakFIVUFjd0IwQUc4QWJRQmZBSE1BY3dC?= =?us-ascii?Q?dUFGOEFjd0J3QUdFQVl3QmxBRjhBZGdBd0FESUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFB?= =?us-ascii?Q?QW5nQUFBR1FBYkFCd0FGOEFjd0JyQUhrQWNBQmxBRjhBWXdCb0FHRUFkQUJm?= =?us-ascii?Q?QUcwQVpRQnpBSE1BWVFCbkFHVUFYd0IyQURBQU1nQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQUFBQVpBQnNBSEFB?= =?us-ascii?Q?WHdCekFHd0FZUUJqQUdzQVh3QmpBR2dBWVFCMEFGOEFiUUJsQUhNQWN3QmhB?= =?us-ascii?Q?R2NBWlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reftwo: QUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJrQUd3QWNBQmZBSFFBWlFCaEFHMEFjd0JmQUc4QWJnQmxBR1FBY2dCcEFIWUFaUUJmQUdZQWFRQnNBR1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHVUFiUUJoQUdrQWJBQmZBR0VBWkFCa0FISUFaUUJ6QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2VBQUFBYlFCaEFISUFkZ0JsQUd3QWJBQmZBSFFBWlFCeUFHMEFhUUJ1QUhVQWN3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUE9PSIvPjwvbWV0YT4= x-dg-rorf: true x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4086:EE_|PH0PR18MB4736:EE_ x-ms-office365-filtering-correlation-id: fabda7f4-6531-4c25-9957-08dae1fef00b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: AtI5Of5CyBJY3CxcNTLlgb3n101Bc+9c9dTp0EYoNM0qbQhy7sMghfLTt0gvtFYodx6ECI2Rkly/QTZYEdO1dMD9bXy+nRp9+dS3b4kYuGHWQ5dFQZV942Xgd/mIqxn56/Zhni8s6C1HQenv0ZoJ9/ZSYplF8qSzi+zMfFtAjOp2kPLXuQym+Ao3DaWdxX0+mEYO3AXDwNXx0m581FbnEwFLrMw3CrgaMEv1z5h0ZXGWEVYb+/SJDeg+vX01AzNkLHPrc1Xx9a2vaH33qsgHIQFsIMA+SqfRpjRo0eWjMSuYYEK/6gQ9062QGBXj8u5lQah1F5wv1v5dGrje2YGadr/vf6r67/FWN8Mj7/PhSta/fpo3lqzWnukIJMTJAoVb80xy7MffQtgge55R4scBT7P0UXluQpw4tXFWAv2XCO7WyapbS5PnjeiX+x452pu4hXaSBxAEi8h6lD9UWA5jAQ23az/JsRfT7enu9r2Ele4ULDjsVYv3KHuQf2c+EFbeSN6rpGoCnU2Qb/XhSAntZBdOcIYrLrvc+uIMbDUKbVcYbQ3Wtx72UiiBx94/XqiB+6PbHWxBf1LJ4jWDPLKSlkb4QDH0ZnIUuUGUS0ZNBpK2e7Ku12gaEajCXtHth+Y/GmVFE6nsGX3Z1Wb9ZN5HKIxESmOQTTZBNr2mGNQkLtDd8vqsTd6RmBeEhDM6/oxoAPZhhh8wyyDkQLL10MT+EA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(136003)(346002)(376002)(396003)(366004)(39860400002)(451199015)(8936002)(52536014)(41300700001)(66476007)(66946007)(66556008)(64756008)(66446008)(76116006)(4326008)(5660300002)(8676002)(110136005)(9686003)(33656002)(6636002)(54906003)(316002)(71200400001)(2906002)(478600001)(186003)(86362001)(53546011)(6506007)(7696005)(26005)(38070700005)(83380400001)(55016003)(38100700002)(122000001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?vVrFrBEDGHswBnL2vnG0Jl4YmGYIf1m73kPNmydeVMqPqTEZuN6FVVY2cCco?= =?us-ascii?Q?7EokE0q+kt9vCSHXVBDOJfXdSAfc+ykCMBNk70Xr/2mG789ny41g0q2HV2W8?= =?us-ascii?Q?6J0n7RJphiLKwPTDl4DnWR9nA7jq0ywOz4O6cnYYbWvkgud1+GsfAYLelPkZ?= =?us-ascii?Q?igFDjsETTbVij7fAPe6s34OpPRMsEjolmimfStR42ywRXl99lw1iN8uMMvlv?= =?us-ascii?Q?zwOw0oV+0qcBq4wDTkezH8Y7P4MfB5XuRcrJO74wY5m+HK83wfDa/5vKyiy4?= =?us-ascii?Q?9j2I3edxgGoZMWOPrn+jpMO8DcWzj6nPLCVSGmBLCOTpaiQuKPZSAgyBrs6c?= =?us-ascii?Q?gc1dC/rYyBO8xfB3+z+SB3QLRNRZOGb7YXYG6hUoKVnRhOhbvKKEciADWgC2?= =?us-ascii?Q?klGRE/rvDvWSutXwakNkOGYsDQYcJIAouuw80TGuaRIMJ+V2NqKs4eXagE+/?= =?us-ascii?Q?/vS5R7ZlA30p2ZqxyjAJaKh0AYOOZ/RNEQKxD+gVW9cKTZx9pApr8/DBCDJM?= =?us-ascii?Q?0tENwRir2/Z2rZrRg5p7KeiN2Eud/dodI5v6hFwqVcdVYgzj/3hUJAkh+nIT?= =?us-ascii?Q?oLWQinhu9J6H2to4ejPl9qeoJvcoP6LEBgwBHtkKrxYfJk4Qk5xFIRGorily?= =?us-ascii?Q?QCx2PM/lgAivCjRd2rD6qKxZl3GfTLpUZVAxmZHkgHmzq5udv22VYPXh77Iw?= =?us-ascii?Q?6Ud3nXDU0Mf4YkxsYEv2MKC4F4seEc3Q8EylrrEd6Ci5UbF/hyhbtUaXPH44?= =?us-ascii?Q?9JS1F/aV3ShtW1PEbbgd3blUJ7oX8vBywALFrtyzy3bbro2towcbRTkHizbp?= =?us-ascii?Q?MNtROX4hJ2pfqTvUvGn01Jtn2j7mPaToZnZLv5qhdBSyJKZE6hU4+PQpX9DR?= =?us-ascii?Q?otVdI1BULE/VHbKLJbqvr5fCGf9VHry5kILNngIK5B9pnnKCMitosZY7zllS?= =?us-ascii?Q?Ihxyya88gGS+A1BAor0z/rOCHQlfsCnvbTtSa7RlTgHFm4lCWFN2NAwKgWB5?= =?us-ascii?Q?Ty7EhDvAl4drqG2ZQVBnksNSO/efYGfo3ONIxZ936smvMoArltu9m+HNeUv0?= =?us-ascii?Q?eUry7KGHwHEEG2dSuBLc9yF7nvkBHRdqPE8dXazqV/J4Q3NWEIbvZ1y0WwfE?= =?us-ascii?Q?DXKtfBKs5muVD19ne61B+TXypMiajl3SNa3J/GN+RGR3nxXJE2ltsdpGzKhB?= =?us-ascii?Q?fvfw1bEGw10pkazQxuCWGNdpg+zoaDTkkcF3lCj+p2JRuuUetg5UsK6whB7O?= =?us-ascii?Q?GouU2wOCuRZYdFCC1tFOzmklJkT+AiDLXjbmFIdhKaifiB2v02hiX5hFz4y2?= =?us-ascii?Q?H1EdEt/9IE0g+XFWz3Oo8RMTttmuWWvf1l/lFwN9SOGi2TDtQFJDreyX1EKy?= =?us-ascii?Q?JiOQULA64Ht2IEPlRviZ3tfIFymtt2Fr0U6kRffqqg0cuVawu5R9FKgfIdDh?= =?us-ascii?Q?j5w/1bGFb/gOR1QmLQvSZccWdn0S9hXln6wzs72FwDNOJB3sVPvkXRsWi8SQ?= =?us-ascii?Q?/lAgELywGMbkYTqHvqs9WEXqmZogQY/BGxLdL7UU6HfPnz0lirNDk0lIy3P3?= =?us-ascii?Q?l0ZdzYC2kBndcy51wpWWkpDyFoytEP1UU/xzsnoi?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fabda7f4-6531-4c25-9957-08dae1fef00b X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2022 20:23:49.1268 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: q3MDBUK26SZ6YNYAewCxcDz9KhbKqLLpLsIwIt6KPdhJP7fp5krzJ6AFWU5pRAyI34e89by4voSTpTNvRlKSTS0pHIs8Xe9FKxTKePr8xNA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB4736 X-Proofpoint-GUID: s432DlivTQR786Le_AOW6QRRlxVUnTj0 X-Proofpoint-ORIG-GUID: s432DlivTQR786Le_AOW6QRRlxVUnTj0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-19_01,2022-12-15_02,2022-06-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: Erik Gabriel Carrillo > Sent: Tuesday, December 20, 2022 1:29 AM > To: Jerin Jacob Kollanukkaran > Cc: hofors@lysator.liu.se; s.v.naga.harish.k@intel.com; > jay.jayatheerthan@intel.com; Pavan Nikhilesh Bhagavatula > ; Shijith Thotton ; > dev@dpdk.org > Subject: [EXT] [PATCH v2] eventdev/timer: add API to get remaining ticks >=20 > External Email >=20 > ---------------------------------------------------------------------- > Introduce an event timer adapter API which allows users to determine how > many adapter ticks remain until an event timer fires. >=20 > Signed-off-by: Erik Gabriel Carrillo > --- > v2: > * Rename API to rte_event_timer_get_remaining_ticks > * Assert that API out param is non-NULL instead of checking and returning > error >=20 > app/test/test_event_timer_adapter.c | 68 > ++++++++++++++++++++++++++ > lib/eventdev/event_timer_adapter_pmd.h | 7 +++ > lib/eventdev/rte_event_timer_adapter.c | 52 ++++++++++++++++++++ > lib/eventdev/rte_event_timer_adapter.h | 27 ++++++++++ > lib/eventdev/version.map | 3 ++ > 5 files changed, 157 insertions(+) >=20 > diff --git a/app/test/test_event_timer_adapter.c > b/app/test/test_event_timer_adapter.c > index 1a440dfd10..1a1fb48b24 100644 > --- a/app/test/test_event_timer_adapter.c > +++ b/app/test/test_event_timer_adapter.c > @@ -1920,6 +1920,72 @@ adapter_create_max(void) > return TEST_SUCCESS; > } >=20 > +static inline int > +test_timer_ticks_remaining(void) > +{ > + uint64_t ticks_remaining =3D UINT64_MAX; > + struct rte_event_timer *ev_tim; > + struct rte_event ev; > + int ret, i; > + const struct rte_event_timer tim =3D { > + .ev.op =3D RTE_EVENT_OP_NEW, > + .ev.queue_id =3D 0, > + .ev.sched_type =3D RTE_SCHED_TYPE_ATOMIC, > + .ev.priority =3D RTE_EVENT_DEV_PRIORITY_NORMAL, > + .ev.event_type =3D RTE_EVENT_TYPE_TIMER, > + .state =3D RTE_EVENT_TIMER_NOT_ARMED, > + }; > + > + rte_mempool_get(eventdev_test_mempool, (void **)&ev_tim); > + *ev_tim =3D tim; > + ev_tim->ev.event_ptr =3D ev_tim; > +#define TEST_TICKS 5 > + ev_tim->timeout_ticks =3D CALC_TICKS(TEST_TICKS); > + > + /* Test that unarmed timer returns error */ > + TEST_ASSERT_FAIL(rte_event_timer_get_remaining_ticks(timdev, > ev_tim, > + &ticks_remaining), > + "Didn't fail to get ticks for unarmed event timer"); Please handle ENOSUP case. > + > + TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, > &ev_tim, 1), 1, > + "Failed to arm timer with proper timeout."); > + TEST_ASSERT_EQUAL(ev_tim->state, RTE_EVENT_TIMER_ARMED, > + "Improper timer state set expected %d returned > %d", > + RTE_EVENT_TIMER_ARMED, ev_tim->state); > + > + for (i =3D 0; i < TEST_TICKS; i++) { > + ret =3D rte_event_timer_get_remaining_ticks(timdev, ev_tim, > + &ticks_remaining); > + if (ret < 0) > + return TEST_FAILED; > + > + TEST_ASSERT_EQUAL((int)ticks_remaining, TEST_TICKS - i, > + "Expected %d ticks remaining, got > %"PRIu64"", > + TEST_TICKS - i, ticks_remaining); > + > + rte_delay_ms(100); > + } > + > + rte_delay_ms(100); > + > + TEST_ASSERT_EQUAL(rte_event_dequeue_burst(evdev, 0, &ev, 1, > 0), 1, > + "Armed timer failed to trigger."); > + TEST_ASSERT_EQUAL(ev_tim->state, > RTE_EVENT_TIMER_NOT_ARMED, > + "Improper timer state set expected %d returned > %d", > + RTE_EVENT_TIMER_NOT_ARMED, ev_tim->state); > + > + /* Test that timer that fired returns error */ > + TEST_ASSERT_FAIL(rte_event_timer_get_remaining_ticks(timdev, > ev_tim, > + &ticks_remaining), > + "Didn't fail to get ticks for unarmed event timer"); > + > + rte_mempool_put(eventdev_test_mempool, (void *)ev_tim); > + > +#undef TEST_TICKS > + return TEST_SUCCESS; > +} > + > + > static struct unit_test_suite event_timer_adptr_functional_testsuite = =3D { > .suite_name =3D "event timer functional test suite", > .setup =3D testsuite_setup, > @@ -1982,6 +2048,8 @@ static struct unit_test_suite > event_timer_adptr_functional_testsuite =3D { > TEST_CASE_ST(timdev_setup_msec, timdev_teardown, > adapter_tick_resolution), > TEST_CASE(adapter_create_max), > + TEST_CASE_ST(timdev_setup_msec, timdev_teardown, > + test_timer_ticks_remaining), > TEST_CASES_END() /**< NULL terminate unit test array */ > } > }; > diff --git a/lib/eventdev/event_timer_adapter_pmd.h > b/lib/eventdev/event_timer_adapter_pmd.h > index 189017b5c1..7ba9df463b 100644 > --- a/lib/eventdev/event_timer_adapter_pmd.h > +++ b/lib/eventdev/event_timer_adapter_pmd.h > @@ -52,6 +52,11 @@ typedef int (*rte_event_timer_adapter_stats_get_t)( > typedef int (*rte_event_timer_adapter_stats_reset_t)( > const struct rte_event_timer_adapter *adapter); > /**< @internal Reset statistics for event timer adapter */ > +typedef int (*rte_event_timer_get_remaining_ticks_t)( > + const struct rte_event_timer_adapter *adapter, > + const struct rte_event_timer *evtim, > + uint64_t *ticks_remaining); > +/**< @internal Get remaining ticks for event timer */ >=20 > /** > * @internal Structure containing the functions exported by an event tim= er > @@ -74,6 +79,8 @@ struct event_timer_adapter_ops { > /**< Arm event timers with same expiration time */ > rte_event_timer_cancel_burst_t cancel_burst; > /**< Cancel one or more event timers */ > + rte_event_timer_get_remaining_ticks_t get_remaining_ticks; > + /**< Get remaining ticks for event timer */ > }; >=20 > /** > diff --git a/lib/eventdev/rte_event_timer_adapter.c > b/lib/eventdev/rte_event_timer_adapter.c > index a0f14bf861..ff762bb5f1 100644 > --- a/lib/eventdev/rte_event_timer_adapter.c > +++ b/lib/eventdev/rte_event_timer_adapter.c > @@ -8,6 +8,7 @@ > #include > #include > #include > +#include >=20 > #include > #include > @@ -458,6 +459,21 @@ rte_event_timer_adapter_stats_reset(struct > rte_event_timer_adapter *adapter) > return adapter->ops->stats_reset(adapter); > } >=20 > +int > +rte_event_timer_get_remaining_ticks( > + const struct rte_event_timer_adapter *adapter, > + const struct rte_event_timer *evtim, > + uint64_t *ticks_remaining) > +{ > + ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL); > + FUNC_PTR_OR_ERR_RET(adapter->ops->get_remaining_ticks, - > ENOTSUP); > + > + RTE_ASSERT(ticks_remaining !=3D NULL); > + > + return adapter->ops->get_remaining_ticks(adapter, evtim, > + ticks_remaining); > +} > + > /* > * Software event timer adapter buffer helper functions > */ > @@ -1072,6 +1088,41 @@ swtim_stats_reset(const struct > rte_event_timer_adapter *adapter) > return 0; > } >=20 > +static int > +swtim_get_remaining_ticks(const struct rte_event_timer_adapter > *adapter, > + const struct rte_event_timer *evtim, > + uint64_t *ticks_remaining) > +{ > + uint64_t nsecs_per_adapter_tick, opaque, cycles_remaining; > + enum rte_event_timer_state n_state; > + double nsecs_per_cycle; > + struct rte_timer *tim; > + uint64_t cur_cycles; > + > + /* Check that timer is armed */ > + n_state =3D __atomic_load_n(&evtim->state, __ATOMIC_ACQUIRE); > + if (n_state !=3D RTE_EVENT_TIMER_ARMED) > + return -EINVAL; > + > + opaque =3D evtim->impl_opaque[0]; > + tim =3D (struct rte_timer *)(uintptr_t)opaque; > + > + cur_cycles =3D rte_get_timer_cycles(); > + if (cur_cycles > tim->expire) { > + *ticks_remaining =3D 0; > + return 0; > + } > + > + cycles_remaining =3D tim->expire - cur_cycles; > + nsecs_per_cycle =3D (double)NSECPERSEC / rte_get_timer_hz(); > + nsecs_per_adapter_tick =3D adapter->data->conf.timer_tick_ns; > + > + *ticks_remaining =3D (uint64_t)ceil((cycles_remaining * > nsecs_per_cycle) / > + nsecs_per_adapter_tick); > + > + return 0; > +} > + > static uint16_t > __swtim_arm_burst(const struct rte_event_timer_adapter *adapter, > struct rte_event_timer **evtims, > @@ -1286,6 +1337,7 @@ static const struct event_timer_adapter_ops > swtim_ops =3D { > .arm_burst =3D swtim_arm_burst, > .arm_tmo_tick_burst =3D swtim_arm_tmo_tick_burst, > .cancel_burst =3D swtim_cancel_burst, > + .get_remaining_ticks =3D swtim_get_remaining_ticks, > }; >=20 > static int > diff --git a/lib/eventdev/rte_event_timer_adapter.h > b/lib/eventdev/rte_event_timer_adapter.h > index cd10db19e4..1e43c09612 100644 > --- a/lib/eventdev/rte_event_timer_adapter.h > +++ b/lib/eventdev/rte_event_timer_adapter.h > @@ -678,6 +678,33 @@ rte_event_timer_cancel_burst(const struct > rte_event_timer_adapter *adapter, > return adapter->cancel_burst(adapter, evtims, nb_evtims); > } >=20 > +/** > + * @warning > + * @b EXPERIMENTAL: this API may change without prior notice > + * > + * Get the number of ticks remaining until an event timer fires. > + * > + * @param adapter > + * A pointer to an event timer adapter structure > + * @param evtim > + * A pointer to an rte_event_timer structure > + * @param[out] ticks_remaining > + * Pointer to variable into which to write the number of ticks remaini= ng > + * until the event timer fires > + * > + * @return > + * - 0: Success > + * - -EINVAL Invalid timer adapter identifier or the event timer is no= t in > + * the armed state > + * - -ENOTSUP The timer adapter implementation does not support this > API. > + */ > +__rte_experimental > +int > +rte_event_timer_get_remaining_ticks( > + const struct rte_event_timer_adapter *adapter, > + const struct rte_event_timer *evtim, > + uint64_t *ticks_remaining); > + > #ifdef __cplusplus > } > #endif > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map > index dd63ec6f68..2b702b6b15 100644 > --- a/lib/eventdev/version.map > +++ b/lib/eventdev/version.map > @@ -118,6 +118,9 @@ EXPERIMENTAL { > rte_event_eth_tx_adapter_instance_get; > rte_event_eth_tx_adapter_queue_start; > rte_event_eth_tx_adapter_queue_stop; > + > + # added in 23.03 > + rte_event_timer_get_remaining_ticks; > }; >=20 > INTERNAL { > -- > 2.23.0