Replace shutdownhook_establish(9) with pmf_device_register1(9).

This commit is contained in:
tsutsui 2009-09-01 15:19:20 +00:00
parent 3a1b983101
commit a2ff563552
3 changed files with 19 additions and 18 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_mec.c,v 1.35 2009/05/09 18:31:46 tsutsui Exp $ */ /* $NetBSD: if_mec.c,v 1.36 2009/09/01 15:19:20 tsutsui Exp $ */
/*- /*-
* Copyright (c) 2004, 2008 Izumi Tsutsui. All rights reserved. * Copyright (c) 2004, 2008 Izumi Tsutsui. All rights reserved.
@ -61,7 +61,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_mec.c,v 1.35 2009/05/09 18:31:46 tsutsui Exp $"); __KERNEL_RCSID(0, "$NetBSD: if_mec.c,v 1.36 2009/09/01 15:19:20 tsutsui Exp $");
#include "opt_ddb.h" #include "opt_ddb.h"
#include "bpfilter.h" #include "bpfilter.h"
@ -293,7 +293,6 @@ struct mec_softc {
bus_space_tag_t sc_st; /* bus_space tag */ bus_space_tag_t sc_st; /* bus_space tag */
bus_space_handle_t sc_sh; /* bus_space handle */ bus_space_handle_t sc_sh; /* bus_space handle */
bus_dma_tag_t sc_dmat; /* bus_dma tag */ bus_dma_tag_t sc_dmat; /* bus_dma tag */
void *sc_sdhook; /* shutdown hook */
struct ethercom sc_ethercom; /* Ethernet common part */ struct ethercom sc_ethercom; /* Ethernet common part */
@ -416,7 +415,7 @@ static void mec_rxintr(struct mec_softc *);
static void mec_rxcsum(struct mec_softc *, struct mbuf *, uint16_t, static void mec_rxcsum(struct mec_softc *, struct mbuf *, uint16_t,
uint32_t); uint32_t);
static void mec_txintr(struct mec_softc *, uint32_t); static void mec_txintr(struct mec_softc *, uint32_t);
static void mec_shutdown(void *); static bool mec_shutdown(device_t, int);
CFATTACH_DECL_NEW(mec, sizeof(struct mec_softc), CFATTACH_DECL_NEW(mec, sizeof(struct mec_softc),
mec_match, mec_attach, NULL, NULL); mec_match, mec_attach, NULL, NULL);
@ -727,7 +726,7 @@ mec_attach(device_t parent, device_t self, void *aux)
#endif #endif
/* set shutdown hook to reset interface on powerdown */ /* set shutdown hook to reset interface on powerdown */
sc->sc_sdhook = shutdownhook_establish(mec_shutdown, sc); pmf_device_register1(self, NULL, NULL, mec_shutdown);
return; return;
@ -1952,12 +1951,14 @@ mec_txintr(struct mec_softc *sc, uint32_t txptr)
ifp->if_flags &= ~IFF_OACTIVE; ifp->if_flags &= ~IFF_OACTIVE;
} }
static void static bool
mec_shutdown(void *arg) mec_shutdown(device_t self, int howto)
{ {
struct mec_softc *sc = arg; struct mec_softc *sc = device_private(self);
mec_stop(&sc->sc_ethercom.ec_if, 1); mec_stop(&sc->sc_ethercom.ec_if, 1);
/* make sure to stop DMA etc. */ /* make sure to stop DMA etc. */
mec_reset(sc); mec_reset(sc);
return true;
} }

View File

@ -1,4 +1,4 @@
/* $NetBSD: dp83932.c,v 1.27 2008/08/23 15:46:47 tsutsui Exp $ */ /* $NetBSD: dp83932.c,v 1.28 2009/09/01 15:20:53 tsutsui Exp $ */
/*- /*-
* Copyright (c) 2001 The NetBSD Foundation, Inc. * Copyright (c) 2001 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: dp83932.c,v 1.27 2008/08/23 15:46:47 tsutsui Exp $"); __KERNEL_RCSID(0, "$NetBSD: dp83932.c,v 1.28 2009/09/01 15:20:53 tsutsui Exp $");
#include "bpfilter.h" #include "bpfilter.h"
@ -71,7 +71,7 @@ int sonic_ioctl(struct ifnet *, u_long, void *);
int sonic_init(struct ifnet *); int sonic_init(struct ifnet *);
void sonic_stop(struct ifnet *, int); void sonic_stop(struct ifnet *, int);
void sonic_shutdown(void *); bool sonic_shutdown(device_t, int);
void sonic_reset(struct sonic_softc *); void sonic_reset(struct sonic_softc *);
void sonic_rxdrain(struct sonic_softc *); void sonic_rxdrain(struct sonic_softc *);
@ -222,8 +222,7 @@ sonic_attach(struct sonic_softc *sc, const uint8_t *enaddr)
/* /*
* Make sure the interface is shutdown during reboot. * Make sure the interface is shutdown during reboot.
*/ */
sc->sc_sdhook = shutdownhook_establish(sonic_shutdown, sc); if (!pmf_device_register1(sc->sc_dev, NULL, NULL, sonic_shutdown))
if (sc->sc_sdhook == NULL)
aprint_error_dev(sc->sc_dev, aprint_error_dev(sc->sc_dev,
"WARNING: unable to establish shutdown hook\n"); "WARNING: unable to establish shutdown hook\n");
return; return;
@ -262,12 +261,14 @@ sonic_attach(struct sonic_softc *sc, const uint8_t *enaddr)
* *
* Make sure the interface is stopped at reboot. * Make sure the interface is stopped at reboot.
*/ */
void bool
sonic_shutdown(void *arg) sonic_shutdown(device_t self, int howto)
{ {
struct sonic_softc *sc = arg; struct sonic_softc *sc = device_private(self);
sonic_stop(&sc->sc_ethercom.ec_if, 1); sonic_stop(&sc->sc_ethercom.ec_if, 1);
return true;
} }
/* /*

View File

@ -1,4 +1,4 @@
/* $NetBSD: dp83932var.h,v 1.11 2008/04/28 20:23:49 martin Exp $ */ /* $NetBSD: dp83932var.h,v 1.12 2009/09/01 15:20:53 tsutsui Exp $ */
/*- /*-
* Copyright (c) 2001 The NetBSD Foundation, Inc. * Copyright (c) 2001 The NetBSD Foundation, Inc.
@ -151,7 +151,6 @@ struct sonic_softc {
bus_space_handle_t sc_sh; /* bus space handle */ bus_space_handle_t sc_sh; /* bus space handle */
bus_dma_tag_t sc_dmat; /* bus DMA tag */ bus_dma_tag_t sc_dmat; /* bus DMA tag */
struct ethercom sc_ethercom; /* ethernet common data */ struct ethercom sc_ethercom; /* ethernet common data */
void *sc_sdhook; /* shutdown hook */
int sc_32bit; /* use 32-bit mode */ int sc_32bit; /* use 32-bit mode */
int sc_bigendian; /* BMODE -> Vcc */ int sc_bigendian; /* BMODE -> Vcc */