X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_dev.h;h=a5c35f00c0a684fbfd78fd7c21878f48620f0e33;hb=df3ff6be2b33faea3edf3c112b9bdc5b74d6f684;hp=15a514bdd9b539e350260d2cda06f9a4b0de8c1e;hpb=52897e7e702b96e4ff6835ead95075b20f65392b;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h index 15a514bdd9..a5c35f00c0 100644 --- a/lib/librte_eal/common/include/rte_dev.h +++ b/lib/librte_eal/common/include/rte_dev.h @@ -43,67 +43,15 @@ typedef void (*rte_dev_event_cb_fn)(const char *device_name, enum rte_dev_event_type event, void *cb_arg); -__attribute__((format(printf, 2, 0))) -static inline void -rte_pmd_debug_trace(const char *func_name, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - - { - char buffer[vsnprintf(NULL, 0, fmt, ap) + 1]; - - va_end(ap); - - va_start(ap, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, ap); - va_end(ap); - - rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", - func_name, buffer); - } -} - -/* - * Enable RTE_PMD_DEBUG_TRACE() when at least one component relying on the - * RTE_*_RET() macros defined below is compiled in debug mode. - */ -#if defined(RTE_LIBRTE_EVENTDEV_DEBUG) -#define RTE_PMD_DEBUG_TRACE(...) \ - rte_pmd_debug_trace(__func__, __VA_ARGS__) -#else -#define RTE_PMD_DEBUG_TRACE(...) (void)0 -#endif - -/* Macros for checking for restricting functions to primary instance only */ -#define RTE_PROC_PRIMARY_OR_ERR_RET(retval) do { \ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ - RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ - return retval; \ - } \ -} while (0) - -#define RTE_PROC_PRIMARY_OR_RET() do { \ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ - RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ - return; \ - } \ -} while (0) - /* Macros to check for invalid function pointers */ #define RTE_FUNC_PTR_OR_ERR_RET(func, retval) do { \ - if ((func) == NULL) { \ - RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ + if ((func) == NULL) \ return retval; \ - } \ } while (0) #define RTE_FUNC_PTR_OR_RET(func) do { \ - if ((func) == NULL) { \ - RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ + if ((func) == NULL) \ return; \ - } \ } while (0) /** @@ -159,13 +107,10 @@ struct rte_device { const struct rte_driver *driver; /**< Driver assigned after probing */ const struct rte_bus *bus; /**< Bus handle assigned on scan */ int numa_node; /**< NUMA node connection */ - struct rte_devargs *devargs; /**< Device user arguments */ + struct rte_devargs *devargs; /**< Arguments for latest probing */ }; /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Query status of a device. * * @param dev @@ -173,36 +118,8 @@ struct rte_device { * @return * (int)true if already probed successfully, 0 otherwise. */ -__rte_experimental int rte_dev_is_probed(const struct rte_device *dev); -/** - * Attach a device to a registered driver. - * - * @param name - * The device name, that refers to a pci device (or some private - * way of designating a vdev device). Based on this device name, eal - * will identify a driver capable of handling it and pass it to the - * driver probing function. - * @param devargs - * Device arguments to be passed to the driver. - * @return - * 0 on success, negative on error. - */ -__rte_deprecated -int rte_eal_dev_attach(const char *name, const char *devargs); - -/** - * Detach a device from its driver. - * - * @param dev - * A pointer to a rte_device structure. - * @return - * 0 on success, negative on error. - */ -__rte_deprecated -int rte_eal_dev_detach(struct rte_device *dev); - /** * Hotplug add a given device to a specific bus. * @@ -223,9 +140,6 @@ int rte_eal_hotplug_add(const char *busname, const char *devname, const char *drvargs); /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Add matching devices. * * In multi-process, it will request other processes to add the same device. @@ -236,7 +150,7 @@ int rte_eal_hotplug_add(const char *busname, const char *devname, * @return * 0 on success, negative on error. */ -int __rte_experimental rte_dev_probe(const char *devargs); +int rte_dev_probe(const char *devargs); /** * Hotplug remove a given device from a specific bus. @@ -254,9 +168,6 @@ int __rte_experimental rte_dev_probe(const char *devargs); int rte_eal_hotplug_remove(const char *busname, const char *devname); /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Remove one device. * * In multi-process, it will request other processes to remove the same device. @@ -267,7 +178,7 @@ int rte_eal_hotplug_remove(const char *busname, const char *devname); * @return * 0 on success, negative on error. */ -int __rte_experimental rte_dev_remove(struct rte_device *dev); +int rte_dev_remove(struct rte_device *dev); /** * Device comparison function. @@ -319,7 +230,7 @@ __attribute__((used)) = str * "pci:v8086:d*:sv*:sd*" all PCI devices supported by this driver * whose vendor id is 0x8086. * - * The format of the kernel modules list is a parenthesed expression + * The format of the kernel modules list is a parenthesized expression * containing logical-and (&) and logical-or (|). * * The device pattern and the kmod expression are separated by a space. @@ -437,7 +348,7 @@ rte_dev_iterator_next(struct rte_dev_iterator *it); * @b EXPERIMENTAL: this API may change without prior notice * * It registers the callback for the specific device. - * Multiple callbacks cal be registered at the same time. + * Multiple callbacks can be registered at the same time. * * @param device_name * The device name, that is the param name of the struct rte_device, @@ -451,7 +362,8 @@ rte_dev_iterator_next(struct rte_dev_iterator *it); * - On success, zero. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_event_callback_register(const char *device_name, rte_dev_event_cb_fn cb_fn, void *cb_arg); @@ -475,7 +387,8 @@ rte_dev_event_callback_register(const char *device_name, * - On success, return the number of callback entities removed. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_event_callback_unregister(const char *device_name, rte_dev_event_cb_fn cb_fn, void *cb_arg); @@ -492,7 +405,8 @@ rte_dev_event_callback_unregister(const char *device_name, * @param event * the device event type. */ -void __rte_experimental +__rte_experimental +void rte_dev_event_callback_process(const char *device_name, enum rte_dev_event_type event); @@ -506,7 +420,8 @@ rte_dev_event_callback_process(const char *device_name, * - On success, zero. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_event_monitor_start(void); /** @@ -519,7 +434,8 @@ rte_dev_event_monitor_start(void); * - On success, zero. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_event_monitor_stop(void); /** @@ -532,7 +448,8 @@ rte_dev_event_monitor_stop(void); * - On success, zero. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_hotplug_handle_enable(void); /** @@ -545,7 +462,57 @@ rte_dev_hotplug_handle_enable(void); * - On success, zero. * - On failure, a negative value. */ -int __rte_experimental +__rte_experimental +int rte_dev_hotplug_handle_disable(void); +/** + * Device level DMA map function. + * After a successful call, the memory segment will be mapped to the + * given device. + * + * @note: Memory must be registered in advance using rte_extmem_* APIs. + * + * @param dev + * Device pointer. + * @param addr + * Virtual address to map. + * @param iova + * IOVA address to map. + * @param len + * Length of the memory segment being mapped. + * + * @return + * 0 if mapping was successful. + * Negative value and rte_errno is set otherwise. + */ +__rte_experimental +int +rte_dev_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len); + +/** + * Device level DMA unmap function. + * After a successful call, the memory segment will no longer be + * accessible by the given device. + * + * @note: Memory must be registered in advance using rte_extmem_* APIs. + * + * @param dev + * Device pointer. + * @param addr + * Virtual address to unmap. + * @param iova + * IOVA address to unmap. + * @param len + * Length of the memory segment being mapped. + * + * @return + * 0 if un-mapping was successful. + * Negative value and rte_errno is set otherwise. + */ +__rte_experimental +int +rte_dev_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, + size_t len); + #endif /* _RTE_DEV_H_ */