6990bbc9e1261c0c209d9b733d09b6aaac00a1bf
[dpdk.git] / drivers / event / dsw / dsw_evdev.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Ericsson AB
3  */
4
5 #include <rte_eventdev_pmd.h>
6 #include <rte_eventdev_pmd_vdev.h>
7
8 #include "dsw_evdev.h"
9
10 #define EVENTDEV_NAME_DSW_PMD event_dsw
11
12 static int
13 dsw_probe(struct rte_vdev_device *vdev)
14 {
15         const char *name;
16         struct rte_eventdev *dev;
17         struct dsw_evdev *dsw;
18
19         name = rte_vdev_device_name(vdev);
20
21         dev = rte_event_pmd_vdev_init(name, sizeof(struct dsw_evdev),
22                                       rte_socket_id());
23         if (dev == NULL)
24                 return -EFAULT;
25
26         if (rte_eal_process_type() != RTE_PROC_PRIMARY)
27                 return 0;
28
29         dsw = dev->data->dev_private;
30         dsw->data = dev->data;
31
32         return 0;
33 }
34
35 static int
36 dsw_remove(struct rte_vdev_device *vdev)
37 {
38         const char *name;
39
40         name = rte_vdev_device_name(vdev);
41         if (name == NULL)
42                 return -EINVAL;
43
44         return rte_event_pmd_vdev_uninit(name);
45 }
46
47 static struct rte_vdev_driver evdev_dsw_pmd_drv = {
48         .probe = dsw_probe,
49         .remove = dsw_remove
50 };
51
52 RTE_PMD_REGISTER_VDEV(EVENTDEV_NAME_DSW_PMD, evdev_dsw_pmd_drv);