1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #include <rtthread.h> 8 #include <drivers/core/bus.h> 9 10 #if defined(RT_USING_POSIX_DEVIO) 11 #include <rtdevice.h> /* for wqueue_init */ 12 #endif 13 14 /** 15 * This function attach a driver to bus 16 * 17 * @param drv the driver to be attached 18 */ rt_driver_register(rt_driver_t drv)19rt_err_t rt_driver_register(rt_driver_t drv) 20 { 21 rt_err_t ret; 22 struct rt_bus *bus = RT_NULL; 23 24 RT_ASSERT(drv != RT_NULL); 25 26 if (drv->bus) 27 { 28 bus = drv->bus; 29 ret = rt_bus_add_driver(bus, drv); 30 } 31 else 32 { 33 ret = -RT_EINVAL; 34 } 35 36 return ret; 37 } 38 RTM_EXPORT(rt_driver_register); 39 40 /** 41 * This function remove driver from system. 42 * 43 * @param drv the driver to be removed 44 */ rt_driver_unregister(rt_driver_t drv)45rt_err_t rt_driver_unregister(rt_driver_t drv) 46 { 47 rt_err_t ret; 48 49 ret = rt_bus_remove_driver(drv); 50 51 return ret; 52 } 53 RTM_EXPORT(rt_driver_unregister); 54