This function performs a variety of device-specific functions.
The request and arg arguments are passed to the file designated
by the s argument and then interpreted by the device driver. The
basic I/O functions are performed through the read() and write()
functions.
Encoded in an ioctl() request is whether the argument is an "in"
argument or an "out" argument, and the size of the arg argument
in bytes. The macros and definitions used to specify an ioctl()
request are located in the IOCTL.H header file.