version 1.1, 2008/05/23 07:15:46 |
version 1.2, 2008/08/14 09:48:50 |
|
|
struct pollfd pfds[MAXFDS]; |
struct pollfd pfds[MAXFDS]; |
struct pollfd *pfd; |
struct pollfd *pfd; |
struct file *f, *fnext; |
struct file *f, *fnext; |
|
struct aproc *p; |
|
|
nfds = 0; |
nfds = 0; |
#ifdef DEBUG |
#ifdef DEBUG |
|
|
f->state |= FILE_ROK; |
f->state |= FILE_ROK; |
DPRINTFN(3, "file_poll: %s rok\n", f->name); |
DPRINTFN(3, "file_poll: %s rok\n", f->name); |
while (f->state & FILE_ROK) { |
while (f->state & FILE_ROK) { |
if (!f->rproc->ops->in(f->rproc, NULL)) |
p = f->rproc; |
|
if (!p || !p->ops->in(p, NULL)) |
break; |
break; |
} |
} |
} |
} |
|
|
f->state |= FILE_WOK; |
f->state |= FILE_WOK; |
DPRINTFN(3, "file_poll: %s wok\n", f->name); |
DPRINTFN(3, "file_poll: %s wok\n", f->name); |
while (f->state & FILE_WOK) { |
while (f->state & FILE_WOK) { |
if (!f->wproc->ops->out(f->wproc, NULL)) |
p = f->wproc; |
|
if (!p || !p->ops->out(p, NULL)) |
break; |
break; |
} |
} |
} |
} |
|
|
LIST_FOREACH(f, &file_list, entry) { |
LIST_FOREACH(f, &file_list, entry) { |
if (f->state & FILE_EOF) { |
if (f->state & FILE_EOF) { |
DPRINTFN(2, "file_poll: %s: eof\n", f->name); |
DPRINTFN(2, "file_poll: %s: eof\n", f->name); |
f->rproc->ops->eof(f->rproc, NULL); |
p = f->rproc; |
|
if (p) |
|
p->ops->eof(p, NULL); |
f->state &= ~FILE_EOF; |
f->state &= ~FILE_EOF; |
} |
} |
if (f->state & FILE_HUP) { |
if (f->state & FILE_HUP) { |
DPRINTFN(2, "file_poll: %s hup\n", f->name); |
DPRINTFN(2, "file_poll: %s hup\n", f->name); |
f->wproc->ops->hup(f->wproc, NULL); |
p = f->wproc; |
|
if (p) |
|
p->ops->hup(p, NULL); |
f->state &= ~FILE_HUP; |
f->state &= ~FILE_HUP; |
} |
} |
} |
} |