|
@@ -223,7 +223,7 @@ static void __pollwait(struct file *filp, wait_queue_head_t *wait_address,
|
|
|
get_file(filp);
|
|
|
entry->filp = filp;
|
|
|
entry->wait_address = wait_address;
|
|
|
- entry->key = p->key;
|
|
|
+ entry->key = p->_key;
|
|
|
init_waitqueue_func_entry(&entry->wait, pollwake);
|
|
|
entry->wait.private = pwq;
|
|
|
add_wait_queue(wait_address, &entry->wait);
|
|
@@ -386,13 +386,11 @@ get_max:
|
|
|
static inline void wait_key_set(poll_table *wait, unsigned long in,
|
|
|
unsigned long out, unsigned long bit)
|
|
|
{
|
|
|
- if (wait) {
|
|
|
- wait->key = POLLEX_SET;
|
|
|
- if (in & bit)
|
|
|
- wait->key |= POLLIN_SET;
|
|
|
- if (out & bit)
|
|
|
- wait->key |= POLLOUT_SET;
|
|
|
- }
|
|
|
+ wait->_key = POLLEX_SET;
|
|
|
+ if (in & bit)
|
|
|
+ wait->_key |= POLLIN_SET;
|
|
|
+ if (out & bit)
|
|
|
+ wait->_key |= POLLOUT_SET;
|
|
|
}
|
|
|
|
|
|
int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
|
@@ -414,7 +412,7 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
|
|
poll_initwait(&table);
|
|
|
wait = &table.pt;
|
|
|
if (end_time && !end_time->tv_sec && !end_time->tv_nsec) {
|
|
|
- wait = NULL;
|
|
|
+ wait->_qproc = NULL;
|
|
|
timed_out = 1;
|
|
|
}
|
|
|
|
|
@@ -459,17 +457,17 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
|
|
if ((mask & POLLIN_SET) && (in & bit)) {
|
|
|
res_in |= bit;
|
|
|
retval++;
|
|
|
- wait = NULL;
|
|
|
+ wait->_qproc = NULL;
|
|
|
}
|
|
|
if ((mask & POLLOUT_SET) && (out & bit)) {
|
|
|
res_out |= bit;
|
|
|
retval++;
|
|
|
- wait = NULL;
|
|
|
+ wait->_qproc = NULL;
|
|
|
}
|
|
|
if ((mask & POLLEX_SET) && (ex & bit)) {
|
|
|
res_ex |= bit;
|
|
|
retval++;
|
|
|
- wait = NULL;
|
|
|
+ wait->_qproc = NULL;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -481,7 +479,7 @@ int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
|
|
|
*rexp = res_ex;
|
|
|
cond_resched();
|
|
|
}
|
|
|
- wait = NULL;
|
|
|
+ wait->_qproc = NULL;
|
|
|
if (retval || timed_out || signal_pending(current))
|
|
|
break;
|
|
|
if (table.error) {
|
|
@@ -720,7 +718,7 @@ struct poll_list {
|
|
|
* interested in events matching the pollfd->events mask, and the result
|
|
|
* matching that mask is both recorded in pollfd->revents and returned. The
|
|
|
* pwait poll_table will be used by the fd-provided poll handler for waiting,
|
|
|
- * if non-NULL.
|
|
|
+ * if pwait->_qproc is non-NULL.
|
|
|
*/
|
|
|
static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)
|
|
|
{
|
|
@@ -738,9 +736,7 @@ static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait)
|
|
|
if (file != NULL) {
|
|
|
mask = DEFAULT_POLLMASK;
|
|
|
if (file->f_op && file->f_op->poll) {
|
|
|
- if (pwait)
|
|
|
- pwait->key = pollfd->events |
|
|
|
- POLLERR | POLLHUP;
|
|
|
+ pwait->_key = pollfd->events|POLLERR|POLLHUP;
|
|
|
mask = file->f_op->poll(file, pwait);
|
|
|
}
|
|
|
/* Mask out unneeded events. */
|
|
@@ -763,7 +759,7 @@ static int do_poll(unsigned int nfds, struct poll_list *list,
|
|
|
|
|
|
/* Optimise the no-wait case */
|
|
|
if (end_time && !end_time->tv_sec && !end_time->tv_nsec) {
|
|
|
- pt = NULL;
|
|
|
+ pt->_qproc = NULL;
|
|
|
timed_out = 1;
|
|
|
}
|
|
|
|
|
@@ -781,22 +777,22 @@ static int do_poll(unsigned int nfds, struct poll_list *list,
|
|
|
for (; pfd != pfd_end; pfd++) {
|
|
|
/*
|
|
|
* Fish for events. If we found one, record it
|
|
|
- * and kill the poll_table, so we don't
|
|
|
+ * and kill poll_table->_qproc, so we don't
|
|
|
* needlessly register any other waiters after
|
|
|
* this. They'll get immediately deregistered
|
|
|
* when we break out and return.
|
|
|
*/
|
|
|
if (do_pollfd(pfd, pt)) {
|
|
|
count++;
|
|
|
- pt = NULL;
|
|
|
+ pt->_qproc = NULL;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/*
|
|
|
* All waiters have already been registered, so don't provide
|
|
|
- * a poll_table to them on the next loop iteration.
|
|
|
+ * a poll_table->_qproc to them on the next loop iteration.
|
|
|
*/
|
|
|
- pt = NULL;
|
|
|
+ pt->_qproc = NULL;
|
|
|
if (!count) {
|
|
|
count = wait->error;
|
|
|
if (signal_pending(current))
|