automatic device driver synthesis with termite
play

Automatic Device Driver Synthesis with Termite Leonid Ryzhyk, Peter - PowerPoint PPT Presentation

Automatic Device Driver Synthesis with Termite Leonid Ryzhyk, Peter Chubb, Ihor Kuz, Etienne Le Sueur, Gernot Heiser UNSW, NICTA, Open Kernel Labs (Australia), John Keys, Intel Conventional driver development OS interface spec device spec


  1. Automatic Device Driver Synthesis with Termite Leonid Ryzhyk, Peter Chubb, Ihor Kuz, Etienne Le Sueur, Gernot Heiser UNSW, NICTA, Open Kernel Labs (Australia), John Keys, Intel

  2. Conventional driver development OS interface spec device spec

  3. Conventional driver development OS interface spec device spec

  4. Conventional driver development OS interface spec requests driver.c device commands device spec

  5. Driver synthesis: high-level view Formal OS interface spec requests driver.c device commands Formal device spec

  6. Driver synthesis: high-level view Formal OS interface spec requests driver.c device commands Formal device spec

  7. Driver synthesis: high-level view Formal OS interface Advantages spec • Separation of concerns – Know one thing well requests • Reuse – Specify once, synthesise many driver.c device commands Formal device spec

  8. Driver synthesis by example Formal OS interface spec ctrl data GPIO controller GPIO line Formal device spec

  9. Driver synthesis by example Formal GPIO controller registers OS interface ctrl data spec 0=off 0=low 1=on 1=high ctrl data GPIO controller GPIO line Formal device spec

  10. Driver synthesis by example view Formal Formal GPIO controller registers OS interface OS interface ctrl data spec spec 0=off 0=low 1=on 1=high ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  11. Driver synthesis by example view Formal Formal GPIO controller registers OS interface OS interface ctrl data spec spec 0=off 0=low 1=on 1=high ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  12. Driver synthesis by example view Formal Formal GPIO controller registers OS interface OS interface ctrl data spec spec 0=off 0=low 1=on 1=high ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  13. Driver synthesis by example view Formal Formal GPIO controller registers OS interface OS interface ctrl data spec spec 0=off 0=low 1=on 1=high ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  14. Driver synthesis by example view Formal Formal GPIO controller registers OS interface OS interface ctrl data spec spec 0=off 0=low 1=on 1=high ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  15. Driver synthesis by example Formal OS interface spec GPIO controller registers ctrl data ?set ?set changeLevel 0=off 0=low 1=on 1=high !setComplete ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  16. Driver synthesis by example Formal OS interface spec GPIO controller registers ctrl data ?set ?set changeLevel 0=off 0=low 1=on 1=high !setComplete ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  17. Driver synthesis by example Formal OS interface spec GPIO controller registers ctrl data ?set ?set changeLevel 0=off 0=low 1=on 1=high !setComplete ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  18. Driver synthesis by example Formal OS interface spec GPIO controller registers ctrl data ?set ?set changeLevel 0=off 0=low 1=on 1=high !setComplete ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  19. Driver synthesis by example Formal OS interface spec GPIO controller registers ctrl data ?set ?set changeLevel 0=off 0=low 1=on 1=high !setComplete ctrl data Formal device spec GPIO controller off !ctrlWrite(1) !ctrlWrite(0) GPIO line on !dataWrite/ changeLevel

  20. Driver synthesis by example Formal OS interface spec ?set ?set changeLevel !setComplete Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  21. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  22. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  23. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  24. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  25. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  26. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) Formal device spec off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  27. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) Formal device spec !dataWrite/ changeLevel off !ctrlWrite(1) !ctrlWrite(0) on !dataWrite/ changeLevel

  28. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) !ctrlWrite(0) !ctrlWrite(0) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  29. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) !ctrlWrite(0) !ctrlWrite(0) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  30. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) !ctrlWrite(0) !ctrlWrite(0) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  31. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete !setComplete ?set ?set !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(1) !ctrlWrite(0) !ctrlWrite(0) !ctrlWrite(0) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  32. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  33. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  34. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  35. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  36. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  37. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

  38. Driver synthesis by example Formal OS interface spec OS spec ‖ Device spec ?set ?set changeLevel !setComplete ?set ?set !ctrlWrite(1) Formal device spec !dataWrite/ changeLevel off ?set ?set !ctrlWrite(1) !ctrlWrite(0) !setComplete on !dataWrite/ changeLevel

Recommend


More recommend