#include <linux/input.h>
#include <linux/major.h>
#include <linux/device.h>
-#include <linux/wakelock.h>
#include "input-compat.h"
struct evdev {
struct fasync_struct *fasync;
struct evdev *evdev;
struct list_head node;
- struct wake_lock wake_lock;
};
static struct evdev *evdev_table[EVDEV_MINORS];
* Interrupts are disabled, just acquire the lock
*/
spin_lock(&client->buffer_lock);
- wake_lock_timeout(&client->wake_lock, 5 * HZ);
client->buffer[client->head++] = *event;
client->head &= EVDEV_BUFFER_SIZE - 1;
spin_unlock(&client->buffer_lock);
mutex_unlock(&evdev->mutex);
evdev_detach_client(evdev, client);
- wake_lock_destroy(&client->wake_lock);
kfree(client);
evdev_close_device(evdev);
}
spin_lock_init(&client->buffer_lock);
- wake_lock_init(&client->wake_lock, WAKE_LOCK_SUSPEND, "evdev");
client->evdev = evdev;
evdev_attach_client(evdev, client);
if (have_event) {
*event = client->buffer[client->tail++];
client->tail &= EVDEV_BUFFER_SIZE - 1;
- if (client->head == client->tail)
- wake_unlock(&client->wake_lock);
}
spin_unlock_irq(&client->buffer_lock);