On Sunday 06 July 2008 09:06:53 Vladimir Dronnikov wrote: > In particular /sys/block/loop* are the symlinks and mdev -s ceased to > mknod /dev/loop*.
Keep in mind that sysfs keeps changing. It has no stable API. In toybox, my callback from dirtree_read() is doing: http://landley.net/hg/toybox/file/292/toys/mdev.c static int callback(char *path, struct dirtree *node) { // Entries in /sys/class/block aren't char devices, so skip 'em. (We'll // get block devices out of /sys/block.) if(!strcmp(node->name, "block")) return 1; // Does this directory have a "dev" entry in it? if (S_ISDIR(node->st.st_mode) || S_ISLNK(node->st.st_mode)) { char *dest = path+strlen(path); strcpy(dest, "/dev"); if (!access(path, R_OK)) make_device(path); *dest = 0; } // Circa 2.6.25 the entries more than 2 deep are all either redundant // (mouse#, event#) or unnamed (every usb_* entry is called "device"). return node->depth>1; } So essentially it recurses into /sys/class/*/* (but no deeper), skips any nodes named "block" (because /sys/class/block didn't used to exist, so we can't rely on it being there and have to check /sys/block to find block devices, but now it's a symlink to the same place as /sys/block so if we _do_ find it it does not contain char devices). I don't _think_ Greg KH and Kay Sievers are intentionally trying to break every other user of sysfs. It's probably just callous disregard rather than intentional malice... The "symlink vs non-symlink" thing used to be a reliable and simple indicator of what was interesting. And then they changed the kernel again. They've broken mdev something like 5 times since the first shell script version, by changing sysfs to have a different (still undocumented) API... Rob -- "One of my most productive days was throwing away 1000 lines of code." - Ken Thompson. _______________________________________________ busybox mailing list [email protected] http://busybox.net/cgi-bin/mailman/listinfo/busybox
