projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
[powerpc.git]
/
fs
/
eventpoll.c
diff --git
a/fs/eventpoll.c
b/fs/eventpoll.c
index
08e7e6a
..
19ffb04
100644
(file)
--- a/
fs/eventpoll.c
+++ b/
fs/eventpoll.c
@@
-1,6
+1,6
@@
/*
* fs/eventpoll.c ( Efficent event polling implementation )
/*
* fs/eventpoll.c ( Efficent event polling implementation )
- * Copyright (C) 2001,...,200
3
Davide Libenzi
+ * Copyright (C) 2001,...,200
6
Davide Libenzi
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-120,7
+120,7
@@
struct epoll_filefd {
*/
struct wake_task_node {
struct list_head llink;
*/
struct wake_task_node {
struct list_head llink;
-
task_
t *task;
+
struct task_struc
t *task;
wait_queue_head_t *wq;
};
wait_queue_head_t *wq;
};
@@
-413,7
+413,7
@@
static void ep_poll_safewake(struct poll_safewake *psw, wait_queue_head_t *wq)
{
int wake_nests = 0;
unsigned long flags;
{
int wake_nests = 0;
unsigned long flags;
-
task_
t *this_task = current;
+
struct task_struc
t *this_task = current;
struct list_head *lsthead = &psw->wake_task_list, *lnk;
struct wake_task_node *tncur;
struct wake_task_node tnode;
struct list_head *lsthead = &psw->wake_task_list, *lnk;
struct wake_task_node *tncur;
struct wake_task_node tnode;
@@
-1004,7
+1004,7
@@
static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
/* Notify waiting tasks that events are available */
if (waitqueue_active(&ep->wq))
/* Notify waiting tasks that events are available */
if (waitqueue_active(&ep->wq))
-
wake_up(&ep->wq
);
+
__wake_up_locked(&ep->wq, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE
);
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
@@
-1083,7
+1083,8
@@
static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_even
/* Notify waiting tasks that events are available */
if (waitqueue_active(&ep->wq))
/* Notify waiting tasks that events are available */
if (waitqueue_active(&ep->wq))
- wake_up(&ep->wq);
+ __wake_up_locked(&ep->wq, TASK_UNINTERRUPTIBLE |
+ TASK_INTERRUPTIBLE);
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
@@
-1260,7
+1261,8
@@
is_linked:
* wait list.
*/
if (waitqueue_active(&ep->wq))
* wait list.
*/
if (waitqueue_active(&ep->wq))
- wake_up(&ep->wq);
+ __wake_up_locked(&ep->wq, TASK_UNINTERRUPTIBLE |
+ TASK_INTERRUPTIBLE);
if (waitqueue_active(&ep->poll_wait))
pwake++;
if (waitqueue_active(&ep->poll_wait))
pwake++;
@@
-1444,7
+1446,8
@@
static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist)
* wait list.
*/
if (waitqueue_active(&ep->wq))
* wait list.
*/
if (waitqueue_active(&ep->wq))
- wake_up(&ep->wq);
+ __wake_up_locked(&ep->wq, TASK_UNINTERRUPTIBLE |
+ TASK_INTERRUPTIBLE);
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
}
@@
-1516,7
+1519,7
@@
retry:
* ep_poll_callback() when events will become available.
*/
init_waitqueue_entry(&wait, current);
* ep_poll_callback() when events will become available.
*/
init_waitqueue_entry(&wait, current);
- add_wait_queue(&ep->wq, &wait);
+
__
add_wait_queue(&ep->wq, &wait);
for (;;) {
/*
for (;;) {
/*
@@
-1536,7
+1539,7
@@
retry:
jtimeout = schedule_timeout(jtimeout);
write_lock_irqsave(&ep->lock, flags);
}
jtimeout = schedule_timeout(jtimeout);
write_lock_irqsave(&ep->lock, flags);
}
- remove_wait_queue(&ep->wq, &wait);
+
__
remove_wait_queue(&ep->wq, &wait);
set_current_state(TASK_RUNNING);
}
set_current_state(TASK_RUNNING);
}