fsd_device.c

Go to the documentation of this file.
00001 
00017 #include <errno.h>
00018 #include <fcntl.h>
00019 #include <unistd.h>
00020  
00021 #include "fsd_device.h"
00022 #include "fsd_debug.h"
00023 #include "fsd_defines.h"
00024 #include <stdio.h>
00025 #include <string.h>
00026 #include <stdlib.h>
00027 
00028 
00039 int fsd_chardevice_open() {
00040         return  open(FSC_DEVICE_LOCATION, O_RDWR);
00041 }
00042 
00043 
00053 int fsd_chardevice_close(int fsc_device) {
00054         return close(fsc_device);
00055 }
00056 
00057 
00067 int fsd_chardevice_read(int fsc_device, char * buffer) {
00068         int result;
00069         if (!fsc_device) {
00070                 return EFSC_DEVICE_NOT_OPEN;
00071         }
00072 
00073         result = read(fsc_device, buffer, MAX_MESSAGE_LENGTH); 
00074         switch (result) {
00075                 case -EINVAL:
00076                         PDEBUG("Fatal error: MAX_MESSAGE_LENGTH = (%d) is shorter than availible data from FSC device.\n", MAX_MESSAGE_LENGTH); 
00077                         break;
00078                 case -EFAULT:
00079                         PDEBUG("Fatal error: Data transfer from FSC device in kernel to FSD in user space failed.\n"); 
00080                         break;
00081         }
00082         
00083         return result;  
00084 }
00085 
00086 
00099 int fsd_chardevice_write(int fsc_device, const char* data, int count) {
00100         int result;
00101         if (!fsc_device) {
00102                 return EFSC_DEVICE_NOT_OPEN;
00103         }
00104 
00105         result = write(fsc_device, data, count); 
00106         switch (result) {
00107                 case -EINVAL:
00108                         PDEBUG("Fatal error: number of chars in the message = (%d) is greater than  FSC device input buffer size.\n", count); 
00109                         break;
00110                 case -EFAULT:
00111                         PDEBUG("Fatal error: Data transfer FSD in user space to FSC device in kernel failed.\n"); 
00112                         break;
00113         }
00114         return result;
00115 }
00116 
00117 

Generated on Mon May 28 13:33:08 2007 for MYSQLFS by  doxygen 1.5.0