Only monitor recognized uevent devices.

system_server can potentially monitor uevent devices that are
of no use to it. For instance, an accelerometer implementation
as uevents. This would cause the process to be busy when
unnecessary. If a device cannot be classified, don't monitor it.

Change-Id: Ib2c93105e7d746d9c1a7414bea8bab3fb8c0b70a
This commit is contained in:
Sean McNeil 2010-06-23 16:00:37 +07:00 committed by Jean-Baptiste Queru
parent 36cb115c77
commit 2e7a530242

View File

@ -581,7 +581,6 @@ int EventHub::open_device(const char *deviceName)
if (strcmp(name, test) == 0) {
LOGI("ignoring event id %s driver %s\n", deviceName, test);
close(fd);
fd = -1;
return -1;
}
}
@ -813,6 +812,14 @@ int EventHub::open_device(const char *deviceName)
device->id, name, propName, keylayoutFilename);
}
// If the device isn't recognized as something we handle, don't monitor it.
if (device->classes == 0) {
LOGV("Dropping device %s %p, id = %d\n", deviceName, device, devid);
close(fd);
delete device;
return -1;
}
LOGI("New device: path=%s name=%s id=0x%x (of 0x%x) index=%d fd=%d classes=0x%x\n",
deviceName, name, device->id, mNumDevicesById, mFDCount, fd, device->classes);