Module open() problems, Linux 2.4.0

From: Richard B. Johnson (root@chaos.analogic.com)
Date: Thu Nov 09 2000 - 14:00:49 EST


`lsmod` shows that a device is open twice when using Linux-2.4.0-test9
when, in fact, it has been opened only once.

lsmod is version 2.3.15, the latest-and-greatest.

Here are the open/close routines for a module.

/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
 * Open the device.
 */
static int device_open(struct inode *inp, struct file *fp)
{
    DEB(printk("%s open\n", info->dev));
    MOD_INC_USE_COUNT; /* Increment usage count */
    return 0;
}
/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/*
 * Close the device.
 */
static int device_close(struct inode *inp, struct file *fp)
{
    DEB(printk("%s close\n", info->dev));
    MOD_DEC_USE_COUNT; /* Decrement usage count */
    return 0;
}

When the module is closed, the use-count goes to zero as expected.
However, a single open() causes the use-count to be 2.

In a possibly-related observation, during the change-root from
an initial RAM disk to the root file system during boot, the
d_count used to be reported as '1'. It is now '3'.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.0 on an i686 machine (799.54 BogoMips).

"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot..."; Actual explanation
obtained from the Micro$oft help desk.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Nov 15 2000 - 21:00:15 EST