I am using Redhat 6.0 with kernel release 2.2.5-13 I have acquired an VME bus loadable char device module driver that utilizes standard ANSI C file management calls i.e. open(), close() ioctl() and close() to manage the VME bus as a device. After much debugging the module driver with printk calls; when the close(fd) function in the user code is called the kernel does not call the drivername_release() function, it is calling the drivername_flush(). The file_operations structure located in fs.h shows flush() located between open() and close(). It should be noted the VME module did not have a drivername_ flush() function and close(fd) was returning a, zero meaning no errors. The file_operations struct drivername_fops used a NULL character placed between the open and release fields as done in many examples. I ended up writing a stub function for drivername_flush() and put a printk in it and found out it was being called when close was called. I have scratched the hard disk and rebuilt the kernel to no avail. As I understand somewhere between kernel 2.0.xx and 2.1xx this structure was changed too the current format used kernel 2.2.5-13. Thus am I dealing with a bad kernel version, a kernel bug or some slight of hand I don't understand. Thank you for your help, Greg McCrea 480-891-5379 [EMAIL PROTECTED]
