On Tuesday 21 June 2005 11:16 am, John Baldwin wrote: > 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.
I just committed it to HEAD and will MFC in a week or so. -- 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]"