Part VI. I/O Package (Device Drivers)

Table of Contents

14. Introduction
15. User API
16. Serial driver details
16.1. Raw Serial Driver
16.1.1. Runtime Configuration
16.1.2. API Details
16.2. TTY driver
16.2.1. Runtime configuration
16.2.2. API details
17. How to Write a Driver
17.1. How to Write a Serial Hardware Interface Driver
17.1.1. DevTab Entry
17.1.2. Serial Channel Structure
17.1.3. Serial Functions Structure
17.1.4. Callbacks
17.2. Serial testing with ser_filter
17.2.1. Rationale
17.2.2. The Protocol
17.2.3. The Serial Tests
17.2.4. Serial Filter Usage
17.2.5. A Note on Failures
17.2.6. Debugging
18. Device Driver Interface to the Kernel
18.1. Interrupt Model
18.2. Synchronization
18.3. SMP Support
18.4. Device Driver Models
18.5. Synchronization Levels
18.6. The API
18.6.1. cyg_drv_isr_lock
18.6.2. cyg_drv_isr_unlock
18.6.3. cyg_drv_spinlock_init
18.6.4. cyg_drv_spinlock_destroy
18.6.5. cyg_drv_spinlock_spin
18.6.6. cyg_drv_spinlock_clear
18.6.7. cyg_drv_spinlock_try
18.6.8. cyg_drv_spinlock_test
18.6.9. cyg_drv_spinlock_spin_intsave
18.6.10. cyg_drv_spinlock_clear_intsave
18.6.11. cyg_drv_dsr_lock
18.6.12. cyg_drv_dsr_unlock
18.6.13. cyg_drv_mutex_init
18.6.14. cyg_drv_mutex_destroy
18.6.15. cyg_drv_mutex_lock
18.6.16. cyg_drv_mutex_trylock
18.6.17. cyg_drv_mutex_unlock
18.6.18. cyg_drv_mutex_release
18.6.19. cyg_drv_cond_init
18.6.20. cyg_drv_cond_destroy
18.6.21. cyg_drv_cond_wait
18.6.22. cyg_drv_cond_signal
18.6.23. cyg_drv_cond_broadcast
18.6.24. cyg_drv_interrupt_create
18.6.25. cyg_drv_interrupt_delete
18.6.26. cyg_drv_interrupt_attach
18.6.27. cyg_drv_interrupt_detach
18.6.28. cyg_drv_interrupt_mask
18.6.29. cyg_drv_interrupt_mask_intunsafe
18.6.30. cyg_drv_interrupt_unmask
18.6.31. cyg_drv_interrupt_unmask_intunsafe
18.6.32. cyg_drv_interrupt_acknowledge
18.6.33. cyg_drv_interrupt_configure
18.6.34. cyg_drv_interrupt_level
18.6.35. cyg_drv_interrupt_set_cpu
18.6.36. cyg_drv_interrupt_get_cpu
18.6.37. cyg_ISR_t
18.6.38. cyg_DSR_t
18.7. Instrumentation