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]

Reply via email to