From: Ben Greear <[EMAIL PROTECTED]>
Date: Sat, 27 Aug 2005 01:23:25 -0700

> The more interesting parts of the patch is below.  The basic
> idea is to pass a key in when you hold or put a device.  This key
> matches puts with holds.  #defined macros grab the file name and
> line number for printing out later.  Duplicate keys are not desired,
> but they should not break anything other than possibly pointing to the
> wrong code as leak culprit.

Hmmm, how about dynamically registered integer keys?
These are just descriptors, anyways.

struct netdev_refcnt_client {
        struct list_head        list;
        const char              *name;
        __u16                   id;
};

int register_netdev_refcnt_client(struct netdev_refcnt_client *);
void unregister_netdev_refcnt_client(struct netdev_refcnt_client *);

The register fills in the "id" field on success, and stores the
struct in some lookup table somewhere.

This way you only need to store __u16's during the actual operations.
Only when you want a dump or a log do you have to go fetching out
the strings and pointers.  You can even use a linked list since
lookup performance is not critical, since it only occurs when the
bug condition triggers.  This is very space efficient for storing
the dev/get logging trails.

Since clients register, you can even provide some sysfs file that
lists the clients.

Just an idea...
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to