driver.c 913 B

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