On Monday 16 May 2005 08:51 am, Stefan Farfeleder wrote: > On Mon, May 16, 2005 at 02:11:42PM +0300, Juho Vuori wrote: > > The below included simple program reliably printfs "error 4\n" on > > 5.4-RELEASE. Am I understanding something wrong or is this a bug in > > libdevinfo? > > There is indeed a bug in libdevinfo. > > > To continue on this however, if you put say sleep(5) between > > devinfo_free() and the second devinfo_init() and manage to change the > > device configuration during the sleep (tested with pluggin in/out a USB > > memory), the program terminates with no errors. I've run into other > > oddities with devinfo as well, but in much more complex situations so > > they might just as well be variations of this simple example. > > > > if (devinfo_init()) { > > devinfo_init() initialises the devinfo_dev tailq, devinfo_generation and > sets devinfo_initted to 1. > > > devinfo_free(); > > devinfo_free() clears devinfo_dev and sets devinfo_initted to 0 but > devinfo_generation keeps its value. > > > if (devinfo_init()) { > > Now devinfo_dev doesn't get filled because ubus.ub_generation == > devinfo_generation. > > Here is a patch that resets devinfo_generation to 0 in devinfo_free(). > The whole file can probably be simplified a bit due to this bug. > > Stefan
I think the intent is actually so that you can call devinfo_init() periodically without calling devinfo_free() to make sure the tree is up to date. However, the generation should still be cleared when free() is called. IOW, if you wanted to have a program that would poll the kernel each second to get the current tree, it would call devinfo_init() in a loop and only call devinfo_free() at program exit. This would let devinfo_init() cache data if the device tree doesn't change. I'll try to get the patch into the tree. -- John Baldwin <[EMAIL PROTECTED]> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"