From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Fri, 15 Oct 2004 17:36:19 +0000 Subject: swich attribute open() to simple stat() Message-Id: <20041015173619.GD6056@vrfy.org> MIME-Version: 1 Content-Type: multipart/mixed; boundary="ZPt4rx8FFjLCG7dd" List-Id: To: linux-hotplug@vger.kernel.org --ZPt4rx8FFjLCG7dd Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Here we switch to a simple stat() to recognize the file creation. This will make it possible to wait for files, which are unreadable. I've switched the timout back to 5 seconds cause the our /class/vc errors seems like a bug in the vc layer not a sysfs delay. Thanks, Kay --ZPt4rx8FFjLCG7dd Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="udev-stat-instead-open.patch" ===== wait_for_sysfs.c 1.18 vs edited ===== --- 1.18/wait_for_sysfs.c 2004-10-14 16:14:00 +02:00 +++ edited/wait_for_sysfs.c 2004-10-15 19:32:38 +02:00 @@ -47,7 +47,7 @@ void log_message(int level, const char * } #endif -#define WAIT_MAX_SECONDS 10 +#define WAIT_MAX_SECONDS 5 #define WAIT_LOOP_PER_SECOND 20 /* wait for specific file to show up, normally the "dev"-file */ @@ -60,7 +60,7 @@ static int wait_for_class_device_attribu { .subsystem = "net", .file = "ifindex" }, { .subsystem = "scsi_host", .file = "unique_id" }, { .subsystem = "scsi_device", .file = NULL }, - { .subsystem = "pcmcia_socket", .file = NULL }, /* all files are unreadable in empty slot :( */ + { .subsystem = "pcmcia_socket", .file = "card_type" }, { .subsystem = "usb_host", .file = NULL }, { .subsystem = "bluetooth", .file = "address" }, { .subsystem = "firmware", .file = "data" }, @@ -86,11 +86,14 @@ static int wait_for_class_device_attribu break; } } - dbg("looking at class '%s' for specific file '%s'", class_dev->classname, file); + + dbg("looking at class '%s' for specific file '%s'", class_dev->classname, class_dev->path); loop = WAIT_MAX_SECONDS * WAIT_LOOP_PER_SECOND; while (--loop) { - if (sysfs_get_classdev_attr(class_dev, file) != NULL) { + struct stat stats; + + if (stat(class_dev->path, &stats) == 0) { dbg("class '%s' specific file '%s' found", class_dev->classname, file); return 0; } --ZPt4rx8FFjLCG7dd-- ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel