/* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2016 RehiveTech. All rights reserved. */ #ifndef RTE_VDEV_H #define RTE_VDEV_H /** * @file * RTE virtual bus API * */ #ifdef __cplusplus extern "C" { #endif typedef void (*rte_vdev_scan_callback)(void *user_arg); /** * Add a callback to be called on vdev scan * before reading the devargs list. * * This function cannot be called in a scan callback * because of deadlock. * * @param callback * The function to be called which can update the devargs list. * @param user_arg * An opaque pointer passed to callback. * @return * 0 on success, negative on error */ int rte_vdev_add_custom_scan(rte_vdev_scan_callback callback, void *user_arg); /** * Remove a registered scan callback. * * This function cannot be called in a scan callback * because of deadlock. * * @param callback * The registered function to be removed. * @param user_arg * The associated opaque pointer or (void*)-1 for any. * @return * 0 on success */ int rte_vdev_remove_custom_scan(rte_vdev_scan_callback callback, void *user_arg); /** * Initialize a driver specified by name. * * @param name * The pointer to a driver name to be initialized. * @param args * The pointer to arguments used by driver initialization. * @return * 0 on success, negative on error */ int rte_vdev_init(const char *name, const char *args); /** * Uninitialize a driver specified by name. * * @param name * The pointer to a driver name to be uninitialized. * @return * 0 on success, negative on error */ int rte_vdev_uninit(const char *name); #ifdef __cplusplus } #endif #endif