1. The character device is named “gmem” and it will show up as “/dev/gmem” device file. 2. This driver is not related to any actual device, and it contains only a 256 byte memory buffer, either static defined in the code as global array or dynamically allocated by kmalloc() when the kernel module is initialized. The buffer is initialized with an ASCII string saying “Hello world! This is <your_name>, and this machine has worked for <how_many> seconds.”. The string is terminated by ASCII zero (C string style). 3. This character device can be access by standard read() and write() system call. If you write a string to this device, i.e. “/dev/gmem” device file, you will append what you write to the string inside the buffer. If you’ve reached the end of the buffer, the remaining part of the string that you are writing will wrap around and overwrite the beginning of the buffer. If you read from it, you will show the content in the buffer. A user application - The user space program is named “gmem_tester”, which can be called in Linux command line. 2. If you run this program with a string parameter “show”, i.e. command line “./gmem_tester show”, it will print the content of the kernel buffer of the character device, as an ASCII string, until the first ASCII zero is encountered. At most 256 bytes will be printed. 3. If you run this program with a string parameter “write”, i.e. command line “./gmem_tester write <your_string>”, it will write <your_string> into the kernel buffer of the device.