Lightweight remote procedure call
ACM Transactions on Computer Systems (TOCS)
Limits to low-latency communication on high-speed networks
ACM Transactions on Computer Systems (TOCS)
Flick: a flexible, optimizing IDL compiler
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
IEEE Transactions on Software Engineering
Implementing remote procedure calls
ACM Transactions on Computer Systems (TOCS)
Developing Windows NT Device Drivers: A Programmer's Handbook
Developing Windows NT Device Drivers: A Programmer's Handbook
The New Jersey machine-code toolkit
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Dealing with Hardware in Embedded Software: A General Framework Based on the Devil Language
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
Towards robust OSes for appliances: a new approach based on domain-specific languages
EW 9 Proceedings of the 9th workshop on ACM SIGOPS European workshop: beyond the PC: new challenges for the operating system
Improving Driver Robustness: An Evaluation of the Devil Approach
DSN '01 Proceedings of the 2001 International Conference on Dependable Systems and Networks (formerly: FTCS)
Spidle: a DSL approach to specifying streaming applications
Proceedings of the 2nd international conference on Generative programming and component engineering
NDL: a domain-specific language for device drivers
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Modeling and Integration of Peripheral Devices in Embedded Systems
DATE '03 Proceedings of the conference on Design, Automation and Test in Europe - Volume 1
Improving the reliability of commodity operating systems
ACM Transactions on Computer Systems (TOCS)
Approaches for Service Deployment
IEEE Internet Computing
HAIL: a language for easy and correct device access
Proceedings of the 5th ACM international conference on Embedded software
Capturing OS expertise in an event type system: the Bossa experience
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
An approach for a dependable Java embedded environment
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
Better extensibility through modular syntax
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Solving the starting problem: device drivers as self-describing artifacts
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
MACEDON: methodology for automatically creating, evaluating, and designing overlay networks
NSDI'04 Proceedings of the 1st conference on Symposium on Networked Systems Design and Implementation - Volume 1
Reliable device drivers require well-defined protocols
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
Staging telephony service creation: a language approach
Proceedings of the 1st international conference on Principles, systems and applications of IP telecommunications
Formalising device driver interfaces
Proceedings of the 4th workshop on Programming languages and operating systems
Proceedings of the 4th ACM European conference on Computer systems
Towards device emulation code generation
Proceedings of the 2009 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Listening to programmers Taxonomies and characteristics of comments in operating system code
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Tolerating hardware device failures in software
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Filet-o-fish: practical and dependable domain-specific languages for OS development
ACM SIGOPS Operating Systems Review
Filet-o-Fish: practical and dependable domain-specific languages for OS development
Proceedings of the Fifth Workshop on Programming Languages and Operating Systems
Reverse engineering of binary device drivers with RevNIC
Proceedings of the 5th European conference on Computer systems
Reverse-engineering drivers for safety and portability
HotDep'08 Proceedings of the Fourth conference on Hot topics in system dependability
Device driver safety through a reference validation mechanism
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Memory safety for low-level software/hardware interactions
SSYM'09 Proceedings of the 18th conference on USENIX security symposium
Decaf: moving device drivers to a modern language
USENIX'09 Proceedings of the 2009 conference on USENIX Annual technical conference
Testing closed-source binary device drivers with DDT
USENIXATC'10 Proceedings of the 2010 USENIX conference on USENIX annual technical conference
An automated approach for finding variable-constant pairing bugs
Proceedings of the IEEE/ACM international conference on Automated software engineering
Improved device driver reliability through verification reuse
HotDep'10 Proceedings of the Sixth international conference on Hot topics in system dependability
IDRIS ---: systems programming meets full dependent types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
A declarative language approach to device configuration
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Improved device driver reliability through hardware verification reuse
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Automatic generation of hardware/software interface with product-specific debugging tools
EUC'06 Proceedings of the 2006 international conference on Embedded and Ubiquitous Computing
A Declarative Language Approach to Device Configuration
ACM Transactions on Computer Systems (TOCS) - Special Issue APLOS 2011
New approach for device driver development – devil+ language
ICESS'04 Proceedings of the First international conference on Embedded Software and Systems
Co-managing software and hardware modules through the juggle middleware
Middleware'11 Proceedings of the 12th ACM/IFIP/USENIX international conference on Middleware
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
ACM SIGOPS 24th Symposium on Operating Systems Principles
VirtuOS: an operating system with kernel virtualization
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
Hi-index | 0.00 |
To keep up with the frantic pace at which devices come out, drivers need to be quickly developed, debugged and tested. Although a driver is a critical system component, the driver development process has made little (if any) progress. The situation is particularly disastrous when considering the hardware operating code (i.e., the layer interacting with the device). Writing this code often relies on inaccurate or incomplete device documentation and involves assembly-level operations. As a result, hard-ware operating code is tedious to write, prone to errors, and hard to debug and maintain. This paper presents a new approach to developing hardware operating code based on an Interface Definition Language (IDL) for hard-ware functionalities, named Devil. This IDL allows a high-level definition of the communication with a device. A compiler automatically checks the consistency of a Devil definition and generates efficient low-level code. Because the Devil compiler checks safety critical properties, the long-awaited notion of robustness for hardware operating code is made possible. Finally, the wide variety of devices that we have already specified (mouse, sound, DMA, interrupt, Ethernet, video, and IDE disk controllers) demonstrates the expressiveness of the Devil language.