Courses/Computer Science/CPSC 457.F2013/Lecture Notes/Devices
Devices
One of the most visible parts of any system is the variety of devices that the system supports; after all, these I/O devices are the way humans largely interact with the CPU and memory: we type on keyboards and touchscreens; we view terminals, monitors, and screens; we point with mice, stylus pens, and game controllers; we use a variety of communications equipment (bluetooth devices, USB devices, network cards), we write to a variety of media like tape, optical discs, rotational drives, SSDs, floppy diskettes, we print to a wide range of printing devices.
Operating systems have to offer a consistent way to access such devices and control them, but the wide variety of internal organizations and physical properties of these devices offers a very challenging target indeed.
- major, minor numbers
- man 3 makedev
- man 1 mknod
- man 2 mknod
- mkdir
- mkfifo
- character devices
- block devices
- special devices (pipes, FIFOs, etc.)
- psuedo devices (/dev/null, /dev/zero)
- udev
- sysfs
Slides
http://www.cpsc.ucalgary.ca/~locasto/teaching/2013/CPSC457-Fall/talks/devices.pdf
notes
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC \[Natoma\] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA \[Natoma/Triton II\] 00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) 00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service 00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01) 00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB 00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) 00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller \[AHCI mode\] (rev 02)
Example Drivers and Infrastructure
- http://lxr.cpsc.ucalgary.ca/lxr/#linux+v2.6.32/net/core/dev.c#L5126
- network device ops structure: http://lxr.cpsc.ucalgary.ca/lxr/#linux+v2.6.32/include/linux/netdevice.h#L489
- http://lxr.cpsc.ucalgary.ca/lxr/#linux+v2.6.32/drivers/net/3c501.c
- http://lxr.cpsc.ucalgary.ca/lxr/#linux+v2.6.32/drivers/net/tulip/interrupt.c#L508
Scribe Notes
Readings
- MOS, 5.1, 5.2, 5.3
- LKD, Chapter 17: Devices and Modules
Related Work
Snooping on USB: http://travisgoodspeed.blogspot.ca/2012/07/emulating-usb-devices-with-python.html