Part VI. I/O Package (Device Drivers)

Table of Contents

15. Introduction
16. User API
17. Serial driver details
17.1. Raw Serial Driver
17.1.1. Runtime Configuration
17.1.2. API Details
17.2. TTY driver
17.2.1. Runtime configuration
17.2.2. API details
18. How to Write a Driver
18.1. How to Write a Serial Hardware Interface Driver
18.1.1. DevTab Entry
18.1.2. Serial Channel Structure
18.1.3. Serial Functions Structure
18.1.4. Callbacks
18.2. Serial testing with ser_filter
18.2.1. Rationale
18.2.2. The Protocol
18.2.3. The Serial Tests
18.2.4. Serial Filter Usage
18.2.5. A Note on Failures
18.2.6. Debugging
19. Device Driver Interface to the Kernel
19.1. Interrupt Model
19.2. Synchronization
19.3. SMP Support
19.4. Device Driver Models
19.5. Synchronization Levels
19.6. The API
19.6.1. cyg_drv_isr_lock
19.6.2. cyg_drv_isr_unlock
19.6.3. cyg_drv_spinlock_init
19.6.4. cyg_drv_spinlock_destroy
19.6.5. cyg_drv_spinlock_spin
19.6.6. cyg_drv_spinlock_clear
19.6.7. cyg_drv_spinlock_try
19.6.8. cyg_drv_spinlock_test
19.6.9. cyg_drv_spinlock_spin_intsave
19.6.10. cyg_drv_spinlock_clear_intsave
19.6.11. cyg_drv_dsr_lock
19.6.12. cyg_drv_dsr_unlock
19.6.13. cyg_drv_mutex_init
19.6.14. cyg_drv_mutex_destroy
19.6.15. cyg_drv_mutex_lock
19.6.16. cyg_drv_mutex_trylock
19.6.17. cyg_drv_mutex_unlock
19.6.18. cyg_drv_mutex_release
19.6.19. cyg_drv_cond_init
19.6.20. cyg_drv_cond_destroy
19.6.21. cyg_drv_cond_wait
19.6.22. cyg_drv_cond_signal
19.6.23. cyg_drv_cond_broadcast
19.6.24. cyg_drv_interrupt_create
19.6.25. cyg_drv_interrupt_delete
19.6.26. cyg_drv_interrupt_attach
19.6.27. cyg_drv_interrupt_detach
19.6.28. cyg_drv_interrupt_mask
19.6.29. cyg_drv_interrupt_mask_intunsafe
19.6.30. cyg_drv_interrupt_unmask
19.6.31. cyg_drv_interrupt_unmask_intunsafe
19.6.32. cyg_drv_interrupt_acknowledge
19.6.33. cyg_drv_interrupt_configure
19.6.34. cyg_drv_interrupt_level
19.6.35. cyg_drv_interrupt_set_cpu
19.6.36. cyg_drv_interrupt_get_cpu
19.6.37. cyg_ISR_t
19.6.38. cyg_DSR_t
19.7. Instrumentation