438
439 start = buf;
440 dev = file->private_data;
441
442 while (1) {
443
444 prepare_to_wait(&dev->wq, &wait, TASK_INTERRUPTIBLE);
445
446 mutex_lock(&dev->ev_mutex);
447 if (!list_empty(&dev->events)) {
448 ret = 0;
449 break;
450 }
451 mutex_unlock(&dev->ev_mutex);
452
453 if (file->f_flags & O_NONBLOCK) {
454 ret = -EAGAIN;
455 break;
456 }
457
458 if (signal_pending(current)) {
459 ret = -EINTR;
460 break;
461 }
462
463 schedule();
464 }
465
466 finish_wait(&dev->wq, &wait);
467 if (ret)
468 return ret;
469
470 while (1) {
471 struct inotify_kernel_event *kevent;
472
473 ret = buf - start;
474 if (list_empty(&dev->events))
475 break;
476
477 kevent = inotify_dev_get_event(dev);
478 if (event_size + kevent->event.len > count) {