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 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 ; 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 To: Dmitry Kozlyuk CC: "dev@dpdk.org" , Thomas Monjalon , Ray Kinsella , "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: 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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Dmitry, Thanks for reviewing. Please find my responses inline. > -----Original Message----- > From: Dmitry Kozlyuk > Sent: Tuesday, October 19, 2021 3:38 AM > To: Harman Kalra > Cc: dev@dpdk.org; Thomas Monjalon ; Ray Kinsella > ; 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; > > };