From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 564C9A0C43;
	Tue, 19 Oct 2021 10:50:43 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 43E2040683;
	Tue, 19 Oct 2021 10:50:43 +0200 (CEST)
Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com
 [67.231.148.174])
 by mails.dpdk.org (Postfix) with ESMTP id 24C4C4003E
 for <dev@dpdk.org>; Tue, 19 Oct 2021 10:50:40 +0200 (CEST)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1])
 by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19J2rmm2009766; 
 Tue, 19 Oct 2021 01:50:38 -0700
Received: from nam10-bn7-obe.outbound.protection.outlook.com
 (mail-bn7nam10lp2108.outbound.protection.outlook.com [104.47.70.108])
 by mx0a-0016f401.pphosted.com with ESMTP id 3bsnmq1hga-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Tue, 19 Oct 2021 01:50:36 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=SJeDZuCpn8LSCJD41YsB6ur1F+U5HHR81qldBGCspU4A95C5V9FFa+71ueND9wE+aeqIOvSPuphgXKS1Kq3hk3wzRQJkS92kYbvwgDrvJjlsa5Ybweu/v1OQb4MSP1d4U602XaHUKzSX1p/i9gYUphTaCeyyd/vnhDhLWdBvw/s8l3eyAmxhgYyrxWAcQozBXv9N7IXnvVffAtTCXcZWQy5asVVeTHbtqG2gwCPrzNSiq6h0yGjvTfbF3keWALCo4oM4Ik5DfSRNzJ1yIEKgphSY85kIIPGTImDyVkLySp+nc15f4U81c1KE2R7+davNtKCb2UMUZ9iQzHCIhPpJZA==
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=b1aNMVMaVYAPeKyzyM+yATFcsM/lWprJaQ+lZdttWUE=;
 b=Kz5jDpo2XgkoVrxwt+dsUtxfffnqqoIX/nc/5gVsYxq537AEEFoB20ym9jqdLIhWOxpyFsO79N5kdpQ9quZhGAFGKajpHabPTlVaTKihR4iyewCn2Cwco1iANPRfoevTvYqGceQdboQjoUPcwmX8FbM3DXZSPksBJC/DHopX7k2r3WGSRj1gqCS+WFHN4sflOTbFu2RcOvchfvCI1h4tfPKTZPQVHAer8BXQ+tOPhjWJI2Jwm87DyupQdpWZxuS1p++yhnJ1/DByUI41wtElAySxVwwjbmrKQhpM8jw2CtFOqposi9VmSUiYmHVu9fY9G/STlsI81gYb2z5g/i2rAw==
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=b1aNMVMaVYAPeKyzyM+yATFcsM/lWprJaQ+lZdttWUE=;
 b=FN7VDvwiuQxnhgide6IMKR3gB+0RAVSww+Ihe0KVvBRfTaJ7snljs9ux/3zX59FOwbOqJNgENsgecjVxpSLchEWg//WtsqfFYSU0T8mcb6LeNnR4r9wd6rPi2FZfTQ0leucVrwhOcyfbiEERWYoB6Vn+54sHf5rOF9sao+9Lt4Y=
Received: from BL1PR18MB4197.namprd18.prod.outlook.com (2603:10b6:208:309::16)
 by BL0PR18MB2082.namprd18.prod.outlook.com (2603:10b6:207:48::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Tue, 19 Oct
 2021 08:50:34 +0000
Received: from BL1PR18MB4197.namprd18.prod.outlook.com
 ([fe80::ec7c:9dd5:7b84:3bc4]) by BL1PR18MB4197.namprd18.prod.outlook.com
 ([fe80::ec7c:9dd5:7b84:3bc4%6]) with mapi id 15.20.4608.018; Tue, 19 Oct 2021
 08:50:34 +0000
From: Harman Kalra <hkalra@marvell.com>
To: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>, Ray
 Kinsella <mdr@ashroe.eu>, "david.marchand@redhat.com"
 <david.marchand@redhat.com>
Thread-Topic: [EXT] Re: [PATCH v3 2/7] eal/interrupts: implement get set APIs
Thread-Index: AQHXxGKdt5yz0m35OkaI3v43YB1ftqvZUFwAgACvZYA=
Date: Tue, 19 Oct 2021 08:50:34 +0000
Message-ID: <BL1PR18MB41977728D08C78B361F78276C5BD9@BL1PR18MB4197.namprd18.prod.outlook.com>
References: <20210826145726.102081-1-hkalra@marvell.com>
 <20211018193707.123559-1-hkalra@marvell.com>
 <20211018193707.123559-3-hkalra@marvell.com>
 <20211019010740.232a6d24@sovereign>
In-Reply-To: <20211019010740.232a6d24@sovereign>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9be3a5e6-d4d6-404a-507d-08d992dd83ef
x-ms-traffictypediagnostic: BL0PR18MB2082:
x-microsoft-antispam-prvs: <BL0PR18MB20821AA8401D5B11C7BC1E09C5BD9@BL0PR18MB2082.namprd18.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:419;
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 4HHNjAF+BDt1ZOrMDMhOYWOzWKe3qdfeoQKjfwQyLzOqRB6Pu5yG9k5SvSGDwG2ww8fcvLtap00UVHEEJupVZPpdILO5auSXyPbsRrCpswmLaFGlKttruq5dyj1JdNbGvz6Jc6RwJZgkuAsyvhZlQsZZRJ1peb3mwu7d9T0/1KzDcJgbZOeztmFCr1OX41ZAEuoGWT0PThKVa0WgasxtELIC3joYAIN/y5DOZFmIud6KZ2KZzfLIH3LKGu2HV/xrdM0ruKCqVd7Cg5WBdkjn9BnwRv62xz23HtSA2lih97qwpR44UVJHCF5HZZ9+DV2/66WGNng5a8xBGyRmmgzRaIBkHwTtg+WIPTsHk5kEaiA2EfAxknuuF/g5H1ovSuqI/wlJxYcU0taQvXe4PpC/jKZ3CMCsIkRmrjn/S19/xdcE5PHa99yYgbw7L/zROWrs/763gO+QUOA47vbHkpZW/ZfewOBcp+Mp0rckF8dIApO3P1Wl3ZZHF3cwc/ir4SDx9sGSLzVf9MvryvBaAreYwvYedstrz2Rf8rsAcE7GF+hkyh08fOcfR0P2GHS1qnYuRIhfs4qs57Bi+gLJiLtkTYh1iZi3asf59s+DGMXUGpW7wgDo3fgY8ejs5PLX5U0k0M7XhQsrKrfw1Oe6aBuskvvcfnfDhxOiJb3sl8b3/YzyOWSYd9JCGd0vrK5MHASG+8v+X6hY0d4oenGnBBQQPQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:BL1PR18MB4197.namprd18.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(4636009)(366004)(8936002)(508600001)(53546011)(71200400001)(38100700002)(4326008)(5660300002)(6916009)(66556008)(9686003)(66946007)(66476007)(64756008)(2906002)(8676002)(38070700005)(52536014)(122000001)(76116006)(83380400001)(6506007)(55016002)(7696005)(30864003)(54906003)(66446008)(316002)(186003)(33656002)(26005)(4001150100001)(86362001);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?JV6nYAv11giPIPYEb7IX+8Xi7+53lIzp9J/OwZqSGgYgwwA6cnLMEnzEIXwO?=
 =?us-ascii?Q?OFGnDSDuu3QR/1i3yD6ivrC5a11wdOFs82606081zEk+53hb3VIRLplr6qwR?=
 =?us-ascii?Q?FcGBjeSSPX1wPeQTqsroxuCBfTqpXSR1A2w7dfktkk68w94Kbxoq372qS9BG?=
 =?us-ascii?Q?wrgx0S1AZqNBsWwd3L4QoidPsiLMSGoBJaVyQraijbWPZ6Ur66lwmBEiWA3Q?=
 =?us-ascii?Q?DQpTSzZpME0xNivd+D3ZR6YMTLyBMUirLaLSNX9XxS1gXCM6wWRxbD0EpAyH?=
 =?us-ascii?Q?sQKLWrqWX78DMymeuYBxbUyzYdr/AxU0K0VVAUWAnTADFprL/hFtvfHMI2kz?=
 =?us-ascii?Q?pWMBFg0UnpanqMF1coKdko+BZzAWVqnvLq7yi4gZb47LegIC6FuFIeMZEZE5?=
 =?us-ascii?Q?8H0sUf3NDRPhFRTYQfDo0HOMrMF+F/Q7Xc8k4n0pFOuQWeS3ryqMPi6fLSmt?=
 =?us-ascii?Q?eaRUhhsPxnYY+GAfnipDv2cUj0/4SDnG5iDAov3ed4lC26g+ZsRoaSLV6Onh?=
 =?us-ascii?Q?ONIY146t3BGgahvz/LTz+gK+yJ3dJu4xJEuT0aBiNrk85RWLVMK9XuebsAfF?=
 =?us-ascii?Q?pRsqMWfEB7q/KR1O4mlftq7A7tvO2Zdmlx823VpxFQSNdksM/zVNeN9ia5Fg?=
 =?us-ascii?Q?/h1xwcL4Gv4nRYD5Oqogi2KIFs7q/XtVDNN70WasoxtJY5eEJzufTpQiHtNE?=
 =?us-ascii?Q?1F6Yqe2iT/hMpE/AvckaopPXOhGko2LC9eXE/NijxDb3ro21NL433ndXjoMV?=
 =?us-ascii?Q?ENrkoCaKCunTHiSXFx0KsHLJftMcvkKyR+dhGCztqomfhkE1mSpfTPieMh6r?=
 =?us-ascii?Q?dvddUgwFQqexGcZr38ufuybkgQPAQAxcJUAmjErMyARslYAwiqfpPd3whWs4?=
 =?us-ascii?Q?zzTSSR+RsxneqC/RO9aI5uh39fBl57DmOUCBXq3OnkB89NWkqpnVaPQ361BQ?=
 =?us-ascii?Q?zMaeUcf1WUtYlMoPYJ2oJdbW+YFeWwiEhbGehTJUCcAALGRkRZdXltIoUg6b?=
 =?us-ascii?Q?ZHS8KLQqoOCvi4Fub4MmekXTc7qHw039LBeedLN1iwHMyQ+Clz2oRwX0Sg/N?=
 =?us-ascii?Q?64A1zrJA7NJgcz8IcmdHGrcuAwRv6qTPQfi6iF8zQeNFJOT4O0rDJgQW8cVZ?=
 =?us-ascii?Q?/8To6j2QKAQJA3eieIzujPdZqWTbvtMO2IJtDS1vxbqAUL7plnTm+80W/k00?=
 =?us-ascii?Q?1qxrP1PuQPuEnNYwQ4vlCPO8dcCJJx0JBg33BdlkCNi6S/y2KNmJbZUjB5RS?=
 =?us-ascii?Q?hScL57S8xBAEy3WUhp+aHcHZoxS8v3LDd+wLk3y0TuEGPvjX24U67iSk/N/9?=
 =?us-ascii?Q?d7mNV6eq4cZS1gxGqt/IuDL1?=
x-ms-exchange-transport-forked: True
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: BL1PR18MB4197.namprd18.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9be3a5e6-d4d6-404a-507d-08d992dd83ef
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2021 08:50:34.7328 (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: 7kjS8OJal1VDjMyshY5QAehRF3pthWDEMnjvrsVJr+vIK9kH/B0k1L+i7OXvviP2aJczuyXIpFSwDPBQU+bUGQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR18MB2082
X-Proofpoint-GUID: c6zWE4bjkHOy9cMEUgKClMTjzXU776tn
X-Proofpoint-ORIG-GUID: c6zWE4bjkHOy9cMEUgKClMTjzXU776tn
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475
 definitions=2021-10-18_07,2021-10-18_01,2020-04-07_01
Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v3 2/7] eal/interrupts: implement
 get set APIs
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

Hi Dmitry,

Thanks for reviewing. Please find my responses inline.

> -----Original Message-----
> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> Sent: Tuesday, October 19, 2021 3:38 AM
> To: Harman Kalra <hkalra@marvell.com>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>; Ray Kinsella
> <mdr@ashroe.eu>; david.marchand@redhat.com
> Subject: [EXT] Re: [PATCH v3 2/7] eal/interrupts: implement get set APIs
>=20
> External Email
>=20
> ----------------------------------------------------------------------
> 2021-10-19 01:07 (UTC+0530), Harman Kalra:
> [...]
> > +struct rte_intr_handle *rte_intr_instance_alloc(void) {
> > +	struct rte_intr_handle *intr_handle;
> > +	bool mem_allocator;
>=20
> This name is not very descriptive; what would "mem_allocator is false"
> mean?
> How about "is_rte_memory"?

Sure, will make it "is_rte_memory"

>=20
> > +
> > +	/* Detect if DPDK malloc APIs are ready to be used. */
> > +	mem_allocator =3D rte_malloc_is_ready();
> > +	if (mem_allocator)
> > +		intr_handle =3D rte_zmalloc(NULL, sizeof(struct
> rte_intr_handle),
> > +					  0);
> > +	else
> > +		intr_handle =3D calloc(1, sizeof(struct rte_intr_handle));
> > +	if (!intr_handle) {
> > +		RTE_LOG(ERR, EAL, "Fail to allocate intr_handle\n");
> > +		rte_errno =3D ENOMEM;
> > +		return NULL;
> > +	}
> > +
> > +	intr_handle->nb_intr =3D RTE_MAX_RXTX_INTR_VEC_ID;
> > +	intr_handle->mem_allocator =3D mem_allocator;
> > +
> > +	return intr_handle;
> > +}
> > +
> > +int rte_intr_instance_copy(struct rte_intr_handle *intr_handle,
> > +			   const struct rte_intr_handle *src) {
> > +	uint16_t nb_intr;
> > +
> > +	CHECK_VALID_INTR_HANDLE(intr_handle);
> > +
> > +	if (src =3D=3D NULL) {
> > +		RTE_LOG(ERR, EAL, "Source interrupt instance
> unallocated\n");
> > +		rte_errno =3D EINVAL;
> > +		goto fail;
> > +	}
> > +
> > +	intr_handle->fd =3D src->fd;
> > +	intr_handle->vfio_dev_fd =3D src->vfio_dev_fd;
> > +	intr_handle->type =3D src->type;
> > +	intr_handle->max_intr =3D src->max_intr;
> > +	intr_handle->nb_efd =3D src->nb_efd;
> > +	intr_handle->efd_counter_size =3D src->efd_counter_size;
> > +
> > +	nb_intr =3D RTE_MIN(src->nb_intr, intr_handle->nb_intr);
>=20
> Truncating copy is error-prone.
> It should be either a reallocation (in the future) or an error (now).

Actually in patch 6, I have made lot of changes to this API wrt nb_intr,
where efds/elist arrays are reallocated based on src->nb_intr and make
intr_handle->nb_intr equal to src->nb_intr. I think those changes can be
moved from patch 6 to patch 2.

>=20
> > +	memcpy(intr_handle->efds, src->efds, nb_intr);
> > +	memcpy(intr_handle->elist, src->elist, nb_intr);
> > +
> > +	return 0;
> > +fail:
> > +	return -rte_errno;
> > +}
> > +
> > +void rte_intr_instance_free(struct rte_intr_handle *intr_handle) {
> > +	if (intr_handle->mem_allocator)
>=20
> This function should accept NULL and be a no-op in such case.

Ack.

>=20
> > +		rte_free(intr_handle);
> > +	else
> > +		free(intr_handle);
> > +}
>=20
> [...]
> > +void *rte_intr_instance_windows_handle_get(struct rte_intr_handle
> > +*intr_handle) {
> > +	CHECK_VALID_INTR_HANDLE(intr_handle);
> > +
> > +	return intr_handle->windows_handle;
> > +fail:
> > +	return NULL;
> > +}
> > +
> > +int rte_intr_instance_windows_handle_set(struct rte_intr_handle
> *intr_handle,
> > +					 void *windows_handle)
> > +{
> > +	CHECK_VALID_INTR_HANDLE(intr_handle);
> > +
> > +	if (!windows_handle) {
> > +		RTE_LOG(ERR, EAL, "Windows handle should not be
> NULL\n");
> > +		rte_errno =3D EINVAL;
> > +		goto fail;
> > +	}
>=20
> Thanks for adding this API, but please remove the check.
> It is possible that the API user will pass NULL to reset the state (also =
NULL is
> not the only invalid value for a Windows handle).
> There is no check for Unix FD, neither should be here.

Sure, will remove the check.

>=20
> > +
> > +	intr_handle->windows_handle =3D windows_handle;
> > +
> > +	return 0;
> > +fail:
> > +	return -rte_errno;
> > +}
>=20
> [...]
> > @@ -79,191 +53,20 @@ struct rte_intr_handle {
> >  			};
> >  			int fd;	/**< interrupt event file descriptor */
> >  		};
> > -		void *handle; /**< device driver handle (Windows) */
> > +		void *windows_handle; /**< device driver handle (Windows)
> */
>=20
> I guess Windows can be dropped from the comment since it's now in the
> name.

Ack.

>=20
> >  	};
> > +	bool mem_allocator;
> >  	enum rte_intr_handle_type type;  /**< handle type */
> >  	uint32_t max_intr;             /**< max interrupt requested */
> >  	uint32_t nb_efd;               /**< number of available efd(event fd)=
 */
> >  	uint8_t efd_counter_size;      /**< size of efd counter, used for vde=
v
> */
> > +	uint16_t nb_intr;
> > +		/**< Max vector count, default
> RTE_MAX_RXTX_INTR_VEC_ID */
> >  	int efds[RTE_MAX_RXTX_INTR_VEC_ID];  /**< intr vectors/efds
> mapping */
> >  	struct rte_epoll_event elist[RTE_MAX_RXTX_INTR_VEC_ID];
> > -				       /**< intr vector epoll event */
> > +						/**< intr vector epoll event */
> > +	uint16_t vec_list_size;
> >  	int *intr_vec;                 /**< intr vector number array */
> >  };
> >
>=20
> [...]
> > diff --git a/lib/eal/include/rte_interrupts.h
> > b/lib/eal/include/rte_interrupts.h
> > index cc3bf45d8c..98edf774af 100644
> > --- a/lib/eal/include/rte_interrupts.h
> > +++ b/lib/eal/include/rte_interrupts.h
> [...]
> > +/**
> > + * @warning
> > + * @b EXPERIMENTAL: this API may change without prior notice
> > + *
> > + * It allocates memory for interrupt instance. API takes flag as an
> > +argument
>=20
> Not anymore. Please update the description.

Ack.

>=20
> > + * which define from where memory should be allocated i.e. using DPDK
> > +memory
> > + * management library APIs or normal heap allocation.
> > + * Default memory allocation for event fds and event list array is
> > +done which
> > + * can be realloced later as per the requirement.
> > + *
> > + * This function should be called from application or driver, before
> > +calling any
> > + * of the interrupt APIs.
> > + *
> > + * @param flags
> > + *  Memory allocation from DPDK allocator or normal allocation
> > + *
> > + * @return
> > + *  - On success, address of first interrupt handle.
> > + *  - On failure, NULL.
> > + */
> > +__rte_experimental
> > +struct rte_intr_handle *
> > +rte_intr_instance_alloc(void);
> > +
> > +/**
> > + * @warning
> > + * @b EXPERIMENTAL: this API may change without prior notice
> > + *
> > + * This API is used to free the memory allocated for event fds. event
> > +lists
> > + * and interrupt handle array.
>=20
> It's simpler and more future-proof to just say "interrupt handle resource=
s"
> instead of enumerating them.

Sure, will reword it.

>=20
> > + *
> > + * @param intr_handle
> > + *  Base address of interrupt handle array.
>=20
> It's not an array anymore.

Ack.

>=20
> [...]
> > +/**
> > + * @internal
> > + * This API is used to set the event list array index with the given
> > +elist
>=20
> "Event list array" sound like an array of lists, while it is really an ar=
ray of
> scalar elements.
> "Event data array"? TBH, I don't know how it's usually named in Unices.
>=20
> > + * instance.
> > + *
> > + * @param intr_handle
> > + *  pointer to the interrupt handle.
> > + * @param index
> > + *  elist array index to be set
> > + * @param elist
> > + *  event list instance of struct rte_epoll_event
> > + *
> > + * @return
> > + *  - On success, zero.
> > + *  - On failure, a negative value.
> > + */
> > +__rte_internal
> > +int
> > +rte_intr_elist_index_set(struct rte_intr_handle *intr_handle, int inde=
x,
> > +			 struct rte_epoll_event elist);
> > +
> > +/**
> > + * @internal
> > + * Returns the address of elist instance of event list array at a give=
n index.
> > + *
> > + * @param intr_handle
> > + *  pointer to the interrupt handle.
> > + * @param index
> > + *  elist array index to be returned
> > + *
> > + * @return
> > + *  - On success, elist
> > + *  - On failure, a negative value.
> > + */
> > +__rte_internal
> > +struct rte_epoll_event *
> > +rte_intr_elist_index_get(struct rte_intr_handle *intr_handle, int
> > +index);
> > +
> > +/**
> > + * @internal
> > + * Allocates the memory of interrupt vector list array, with size
> > +defining the
> > + * no of elements required in the array.
>=20
> Typo: "no" -> "number".

Ack.

>=20
> [...]
> > +
> > +/**
> > + * @internal
> > + * This API returns the windows handle of the given interrupt instance=
.
>=20
> Typo: "windows" -> "Windows" here and below.
>=20
> > + *
> > + * @param intr_handle
> > + *  pointer to the interrupt handle.
> > + *
> > + * @return
> > + *  - On success, windows handle.
> > + *  - On failure, NULL.
> > + */
> > +__rte_internal
> > +void *
> > +rte_intr_instance_windows_handle_get(struct rte_intr_handle
> > +*intr_handle);
> > +
> > +/**
> > + * @internal
> > + * This API set the windows handle for the given interrupt instance.
> > + *
> > + * @param intr_handle
> > + *  pointer to the interrupt handle.
> > + * @param windows_handle
> > + *  windows handle to be set.
> > + *
> > + * @return
> > + *  - On success, zero
> > + *  - On failure, a negative value.
> > + */
> > +__rte_internal
> > +int
> > +rte_intr_instance_windows_handle_set(struct rte_intr_handle
> *intr_handle,
> > +				     void *windows_handle);
> > +
> >  #ifdef __cplusplus
> >  }
> >  #endif
> > diff --git a/lib/eal/version.map b/lib/eal/version.map index
> > 38f7de83e1..0ef77c3b40 100644
> > --- a/lib/eal/version.map
> > +++ b/lib/eal/version.map
> > @@ -109,18 +109,10 @@ DPDK_22 {
> >  	rte_hexdump;
> >  	rte_hypervisor_get;
> >  	rte_hypervisor_get_name; # WINDOWS_NO_EXPORT
> > -	rte_intr_allow_others;
> >  	rte_intr_callback_register;
> >  	rte_intr_callback_unregister;
> > -	rte_intr_cap_multiple;
> > -	rte_intr_disable;
> > -	rte_intr_dp_is_en;
> > -	rte_intr_efd_disable;
> > -	rte_intr_efd_enable;
> >  	rte_intr_enable;
> > -	rte_intr_free_epoll_fd;
> > -	rte_intr_rx_ctl;
> > -	rte_intr_tls_epfd;
> > +	rte_intr_disable;
> >  	rte_keepalive_create; # WINDOWS_NO_EXPORT
> >  	rte_keepalive_dispatch_pings; # WINDOWS_NO_EXPORT
> >  	rte_keepalive_mark_alive; # WINDOWS_NO_EXPORT @@ -420,6
> +412,14 @@
> > EXPERIMENTAL {
> >
> >  	# added in 21.08
> >  	rte_power_monitor_multi; # WINDOWS_NO_EXPORT
> > +
> > +	# added in 21.11
> > +	rte_intr_fd_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_fd_get; # WINDOWS_NO_EXPORT
>=20
> OK, these are not feasible on Windows.

Ack.

>=20
> > +	rte_intr_type_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_type_get; # WINDOWS_NO_EXPORT
> > +	rte_intr_instance_alloc; # WINDOWS_NO_EXPORT
> > +	rte_intr_instance_free; # WINDOWS_NO_EXPORT
>=20
> No, these *are* needed on Windows.

Ack.

>=20
> >  };
> >
> >  INTERNAL {
> > @@ -430,4 +430,33 @@ INTERNAL {
> >  	rte_mem_map;
> >  	rte_mem_page_size;
> >  	rte_mem_unmap;
> > +	rte_intr_cap_multiple;
> > +	rte_intr_dp_is_en;
> > +	rte_intr_efd_disable;
> > +	rte_intr_efd_enable;
> > +	rte_intr_free_epoll_fd;
> > +	rte_intr_rx_ctl;
> > +	rte_intr_allow_others;
> > +	rte_intr_tls_epfd;
> > +	rte_intr_dev_fd_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_dev_fd_get; # WINDOWS_NO_EXPORT
>=20
> OK.
>=20
> > +	rte_intr_instance_copy; # WINDOWS_NO_EXPORT
> > +	rte_intr_event_list_update; # WINDOWS_NO_EXPORT
> > +	rte_intr_max_intr_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_max_intr_get; # WINDOWS_NO_EXPORT
>=20
> These are needed on Windows.

Ack.

>=20
> > +	rte_intr_nb_efd_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_nb_efd_get; # WINDOWS_NO_EXPORT
> > +	rte_intr_nb_intr_get; # WINDOWS_NO_EXPORT
> > +	rte_intr_efds_index_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_efds_index_get; # WINDOWS_NO_EXPORT
>=20
> OK.
>=20
> > +	rte_intr_elist_index_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_elist_index_get; # WINDOWS_NO_EXPORT
>=20
> These are needed on Windows.

Ack.

>=20
> > +	rte_intr_efd_counter_size_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_efd_counter_size_get; # WINDOWS_NO_EXPORT
>=20
> OK.
>=20
> > +	rte_intr_vec_list_alloc; # WINDOWS_NO_EXPORT
> > +	rte_intr_vec_list_index_set; # WINDOWS_NO_EXPORT
> > +	rte_intr_vec_list_index_get; # WINDOWS_NO_EXPORT
> > +	rte_intr_vec_list_free; # WINDOWS_NO_EXPORT
>=20
> These are needed on Windows.

Ack.

>=20
> > +	rte_intr_instance_windows_handle_get;
> > +	rte_intr_instance_windows_handle_set;
> >  };