Starting from:
$30

$24

Assignment #4 Solution




User Space stuff




Sometimes it is easier and/or better to not have more code inside the kernel space – this may be for easier debugging, access to other libraries, or other specific reasons. Using a part of the system call interface we can cheat a bit and get access to the kernel's memory space at the user level.




Those Blinking Users




This can be done in any number of user level programming languages, but we recommend you stick with C so that we can better help you. Your user program needs to:




Find one of the ethernet devices in your Virtual Machine (perhaps e1000?) and map the appropriate BAR



Save the current LEDCTL value and print it for the user to read



Turn the LED2 and LED0 LEDs on for 2 seconds



Turn all LEDs off for 2 seconds



Loop 5 times and turn each LED (LED3, LED2, LED1, LED0) on for 1 second



Restore LEDCTL to initial value



Read and print the contents of the Good Packets Received statistics register



Clean up and exit



Run this program a couple of times while e1000 is loaded in the Virtual Machine to see if you can catch any packets being sent and counted by reading the Good Packets Received register. Also run this with ledmon from Assignments 3 and 4 to verify the LED’s are properly blinking. Remember that you can run this user program while the original driver is still loaded, as long as you don't do something that conflicts and confuses the driver. You can even do this on some other hardware if there's an LED to blink.




The Blink is over




Turn in these materials before or at the start of class on ​Wednesday​,​15-May-2019:




Source code to your user program, Makefile, and any scripts used.



Note that you won't need to unload the existing kernel network driver to run this program. Give a short explain what this might imply.



A typescript of the user program running at least three times (partly to try to catch the packet counter changing)



A note from someone (anyone, but a TA is a good choice) saying they actually saw it work.

More products