version 1.71, 2020/04/24 11:33:28 |
version 1.72, 2020/06/12 15:40:18 |
|
|
void dev_adjpar(struct dev *, int, int, int); |
void dev_adjpar(struct dev *, int, int, int); |
int dev_allocbufs(struct dev *); |
int dev_allocbufs(struct dev *); |
int dev_open(struct dev *); |
int dev_open(struct dev *); |
void dev_exitall(struct dev *); |
|
void dev_freebufs(struct dev *); |
void dev_freebufs(struct dev *); |
void dev_close(struct dev *); |
void dev_close(struct dev *); |
int dev_ref(struct dev *); |
int dev_ref(struct dev *); |
|
|
} |
} |
|
|
/* |
/* |
* Force all slots to exit |
* Force all slots to exit and close device, called after an error |
*/ |
*/ |
void |
void |
dev_exitall(struct dev *d) |
dev_abort(struct dev *d) |
{ |
{ |
int i; |
int i; |
struct slot *s; |
struct slot *s; |
|
|
c->ops->exit(c->arg); |
c->ops->exit(c->arg); |
c->ops = NULL; |
c->ops = NULL; |
} |
} |
|
|
|
if (d->pstate != DEV_CFG) |
|
dev_close(d); |
} |
} |
|
|
/* |
/* |
|
|
{ |
{ |
struct ctl *c; |
struct ctl *c; |
|
|
dev_exitall(d); |
|
d->pstate = DEV_CFG; |
d->pstate = DEV_CFG; |
dev_sio_close(d); |
dev_sio_close(d); |
dev_freebufs(d); |
dev_freebufs(d); |