set private_data of struct file to pointer to netdev_data for easy
access
added propper freeing of data reserved for write operation
need to free args.data since we allocated it in that function
added a limit of opened files for one device and a hashtable limit
added fo_access to host code related to multiple processes opening the
same device
removed uselesss includes
moved code printing file operation name and process to fo_comm
fo_send, fo_recv, fo_complete and fo_execute now take fo_access as
argument since they deal with one opened file by one process
changed serializaiton code to have the process(access) ID as first for
easy access by server instance
when serializing file operaiton request access IT has to be first
instead of netdev_data we nwo use fo_access

this is necessary to support multiple processes openining the same
device file
created fo_access with all the code related to struct fo_access

fo_access describes one process accessing the device file, one is
created for every process
struct fo_access relates to one process opening device file
all recv functions take fo_access structure as argument now

this is necessary since they deal with one specific process opening the
device file, before this code supported only one process at a time
all recv functions now take struct fo_access as first argument

this is necessary for support of multiple processes accessing the same
device file
send_read should free it's data, also send_open needs to create struct
fo_access

this way netdev can support multiple processes accessing the same device
file
netdev_data now holds a hashtable for fo_access

hashtable for fo_access allows for easy access to opened ongoing file
operations based on process id
fo_queue was moved from netdev_data to fo_access

since queue of file operations only makes sense based on one process
accessing it
kcalloc doesn't need to cast since it returns void
removed useless lable of free_fo_queue