| 1823 | } |
| 1824 | |
| 1825 | static int |
| 1826 | eventdev_build_telemetry_data(int dev_id, |
| 1827 | enum rte_event_dev_xstats_mode mode, |
| 1828 | int port_queue_id, |
| 1829 | struct rte_tel_data *d) |
| 1830 | { |
| 1831 | struct rte_event_dev_xstats_name *xstat_names; |
| 1832 | uint64_t *ids; |
| 1833 | uint64_t *values; |
| 1834 | int i, ret, num_xstats; |
| 1835 | |
| 1836 | num_xstats = rte_event_dev_xstats_names_get(dev_id, |
| 1837 | mode, |
| 1838 | port_queue_id, |
| 1839 | NULL, |
| 1840 | NULL, |
| 1841 | 0); |
| 1842 | |
| 1843 | if (num_xstats < 0) |
| 1844 | return -1; |
| 1845 | |
| 1846 | /* use one malloc for names */ |
| 1847 | xstat_names = malloc((sizeof(struct rte_event_dev_xstats_name)) |
| 1848 | * num_xstats); |
| 1849 | if (xstat_names == NULL) |
| 1850 | return -1; |
| 1851 | |
| 1852 | ids = malloc((sizeof(uint64_t)) * num_xstats); |
| 1853 | if (ids == NULL) { |
| 1854 | free(xstat_names); |
| 1855 | return -1; |
| 1856 | } |
| 1857 | |
| 1858 | values = malloc((sizeof(uint64_t)) * num_xstats); |
| 1859 | if (values == NULL) { |
| 1860 | free(xstat_names); |
| 1861 | free(ids); |
| 1862 | return -1; |
| 1863 | } |
| 1864 | |
| 1865 | ret = rte_event_dev_xstats_names_get(dev_id, mode, port_queue_id, |
| 1866 | xstat_names, ids, num_xstats); |
| 1867 | if (ret < 0 || ret > num_xstats) { |
| 1868 | free(xstat_names); |
| 1869 | free(ids); |
| 1870 | free(values); |
| 1871 | return -1; |
| 1872 | } |
| 1873 | |
| 1874 | ret = rte_event_dev_xstats_get(dev_id, mode, port_queue_id, |
| 1875 | ids, values, num_xstats); |
| 1876 | if (ret < 0 || ret > num_xstats) { |
| 1877 | free(xstat_names); |
| 1878 | free(ids); |
| 1879 | free(values); |
| 1880 | return -1; |
| 1881 | } |
| 1882 |
no test coverage detected