cvs commit: src/sys/netgraph/bluetooth/drivers/bt3c
ng_bt3c_pccard.c
Maksim Yevmenkin
maksim.yevmenkin at gmail.com
Wed Oct 26 10:24:56 PDT 2005
On 10/26/05, John Baldwin <jhb at freebsd.org> wrote:
> On Wednesday 26 October 2005 12:33 pm, Maksim Yevmenkin wrote:
> > John,
> >
> > [...]
> >
> > > Sorry about that, will be fixing it more cleanly. BTW, does anyone know
> > > why this driver allocates its softc manualn in its attach routine?
> >
> > ng_bt3c(4) is a netgraph device driver. there could be failures in
> > both device part (i/o port, interrupts etc.) as well as in netgraph
> > part (could not create node). so decided to do it this way. right now
> > i can not recall any other reason :)
>
> Even if netgraph fails then new-bus will still free it for you when attach
> returns ENXIO. All you have to do is set the size in your driver_t and axe
> the malloc, free, and device_set_softc calls and you should be done.
would something like this do? or am i missing something? please note:
i have not tested the patch.
cvs diff: Diffing .
Index: ng_bt3c_pccard.c
===================================================================
RCS file: /home/ncvs/src/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c,v
retrieving revision 1.17
diff -u -r1.17 ng_bt3c_pccard.c
--- ng_bt3c_pccard.c 26 Oct 2005 15:52:16 -0000 1.17
+++ ng_bt3c_pccard.c 26 Oct 2005 17:23:02 -0000
@@ -612,11 +612,7 @@
static int
bt3c_pccard_attach(device_t dev)
{
- bt3c_softc_p sc = NULL;
-
- sc = (bt3c_softc_p) malloc(sizeof(*sc), M_BT3C, M_NOWAIT|M_ZERO);
- if (sc == NULL)
- return (ENOMEM);
+ bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev);
/* Allocate I/O ports */
sc->iobase_rid = 0;
@@ -677,7 +673,6 @@
sc->want = 1;
NG_NODE_SET_PRIVATE(sc->node, sc);
- device_set_softc(dev, sc);
return (0);
bad:
@@ -705,8 +700,6 @@
sc->iobase_rid = 0;
}
- free(sc, M_BT3C);
-
return (ENXIO);
} /* bt3c_pccacd_attach */
@@ -1197,7 +1190,7 @@
static driver_t bt3c_pccard_driver = {
NG_BT3C_NODE_TYPE,
bt3c_pccard_methods,
- 0
+ sizeof(bt3c_softc_t)
};
static devclass_t bt3c_devclass;
==
max
More information about the cvs-src
mailing list