version 1.40, 2009/11/15 21:44:09 |
version 1.41, 2010/01/05 10:18:12 |
|
|
} |
} |
|
|
int |
int |
rpipe_in(struct aproc *p, struct abuf *ibuf_dummy) |
rfile_in(struct aproc *p, struct abuf *ibuf_dummy) |
{ |
{ |
struct abuf *obuf = LIST_FIRST(&p->obuflist); |
struct abuf *obuf = LIST_FIRST(&p->obuflist); |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
|
|
} |
} |
|
|
int |
int |
rpipe_out(struct aproc *p, struct abuf *obuf) |
rfile_out(struct aproc *p, struct abuf *obuf) |
{ |
{ |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
unsigned char *data; |
unsigned char *data; |
|
|
} |
} |
|
|
void |
void |
rpipe_done(struct aproc *p) |
rfile_done(struct aproc *p) |
{ |
{ |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
struct abuf *obuf; |
struct abuf *obuf; |
|
|
} |
} |
|
|
void |
void |
rpipe_eof(struct aproc *p, struct abuf *ibuf_dummy) |
rfile_eof(struct aproc *p, struct abuf *ibuf_dummy) |
{ |
{ |
aproc_del(p); |
aproc_del(p); |
} |
} |
|
|
void |
void |
rpipe_hup(struct aproc *p, struct abuf *obuf) |
rfile_hup(struct aproc *p, struct abuf *obuf) |
{ |
{ |
aproc_del(p); |
aproc_del(p); |
} |
} |
|
|
struct aproc_ops rpipe_ops = { |
struct aproc_ops rfile_ops = { |
"rpipe", |
"rpipe", |
rpipe_in, |
rfile_in, |
rpipe_out, |
rfile_out, |
rpipe_eof, |
rfile_eof, |
rpipe_hup, |
rfile_hup, |
NULL, /* newin */ |
NULL, /* newin */ |
NULL, /* newout */ |
NULL, /* newout */ |
aproc_ipos, |
aproc_ipos, |
aproc_opos, |
aproc_opos, |
rpipe_done |
rfile_done |
}; |
}; |
|
|
struct aproc * |
struct aproc * |
rpipe_new(struct file *f) |
rfile_new(struct file *f) |
{ |
{ |
struct aproc *p; |
struct aproc *p; |
|
|
p = aproc_new(&rpipe_ops, f->name); |
p = aproc_new(&rfile_ops, f->name); |
p->u.io.file = f; |
p->u.io.file = f; |
f->rproc = p; |
f->rproc = p; |
return p; |
return p; |
} |
} |
|
|
void |
void |
wpipe_done(struct aproc *p) |
wfile_done(struct aproc *p) |
{ |
{ |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
struct abuf *ibuf; |
struct abuf *ibuf; |
|
|
} |
} |
|
|
int |
int |
wpipe_in(struct aproc *p, struct abuf *ibuf) |
wfile_in(struct aproc *p, struct abuf *ibuf) |
{ |
{ |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
unsigned char *data; |
unsigned char *data; |
|
|
} |
} |
|
|
int |
int |
wpipe_out(struct aproc *p, struct abuf *obuf_dummy) |
wfile_out(struct aproc *p, struct abuf *obuf_dummy) |
{ |
{ |
struct abuf *ibuf = LIST_FIRST(&p->ibuflist); |
struct abuf *ibuf = LIST_FIRST(&p->ibuflist); |
struct file *f = p->u.io.file; |
struct file *f = p->u.io.file; |
|
|
} |
} |
|
|
void |
void |
wpipe_eof(struct aproc *p, struct abuf *ibuf) |
wfile_eof(struct aproc *p, struct abuf *ibuf) |
{ |
{ |
aproc_del(p); |
aproc_del(p); |
} |
} |
|
|
void |
void |
wpipe_hup(struct aproc *p, struct abuf *obuf_dummy) |
wfile_hup(struct aproc *p, struct abuf *obuf_dummy) |
{ |
{ |
aproc_del(p); |
aproc_del(p); |
} |
} |
|
|
struct aproc_ops wpipe_ops = { |
struct aproc_ops wfile_ops = { |
"wpipe", |
"wpipe", |
wpipe_in, |
wfile_in, |
wpipe_out, |
wfile_out, |
wpipe_eof, |
wfile_eof, |
wpipe_hup, |
wfile_hup, |
NULL, /* newin */ |
NULL, /* newin */ |
NULL, /* newout */ |
NULL, /* newout */ |
aproc_ipos, |
aproc_ipos, |
aproc_opos, |
aproc_opos, |
wpipe_done |
wfile_done |
}; |
}; |
|
|
struct aproc * |
struct aproc * |
wpipe_new(struct file *f) |
wfile_new(struct file *f) |
{ |
{ |
struct aproc *p; |
struct aproc *p; |
|
|
p = aproc_new(&wpipe_ops, f->name); |
p = aproc_new(&wfile_ops, f->name); |
p->u.io.file = f; |
p->u.io.file = f; |
f->wproc = p; |
f->wproc = p; |
return p; |
return p; |