Module Name: src
Committed By: tsutsui
Date: Fri Sep 4 16:21:24 UTC 2009
Modified Files:
src/sys/dev/ic: lance.c lancevar.h
Log Message:
Replace shutdownhook_establish(9) with pmf_device_register1(9).
Tested on sun3x.
To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/dev/ic/lance.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/ic/lancevar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ic/lance.c
diff -u src/sys/dev/ic/lance.c:1.42 src/sys/dev/ic/lance.c:1.43
--- src/sys/dev/ic/lance.c:1.42 Fri Nov 7 00:20:02 2008
+++ src/sys/dev/ic/lance.c Fri Sep 4 16:21:24 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: lance.c,v 1.42 2008/11/07 00:20:02 dyoung Exp $ */
+/* $NetBSD: lance.c,v 1.43 2009/09/04 16:21:24 tsutsui Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lance.c,v 1.42 2008/11/07 00:20:02 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lance.c,v 1.43 2009/09/04 16:21:24 tsutsui Exp $");
#include "bpfilter.h"
#include "rnd.h"
@@ -111,7 +111,7 @@
integrate struct mbuf *lance_get(struct lance_softc *, int, int);
-hide void lance_shutdown(void *);
+hide bool lance_shutdown(device_t, int);
int lance_mediachange(struct ifnet *);
void lance_mediastatus(struct ifnet *, struct ifmediareq *);
@@ -250,9 +250,12 @@
if_attach(ifp);
ether_ifattach(ifp, sc->sc_enaddr);
- sc->sc_sh = shutdownhook_establish(lance_shutdown, ifp);
- if (sc->sc_sh == NULL)
- panic("lance_config: can't establish shutdownhook");
+ if (pmf_device_register1(sc->sc_dev, NULL, NULL, lance_shutdown))
+ pmf_class_network_register(sc->sc_dev, ifp);
+ else
+ aprint_error_dev(sc->sc_dev,
+ "couldn't establish power handler\n");
+
sc->sc_rbufaddr = malloc(sc->sc_nrbuf * sizeof(int), M_DEVBUF,
M_WAITOK);
sc->sc_tbufaddr = malloc(sc->sc_ntbuf * sizeof(int), M_DEVBUF,
@@ -568,11 +571,15 @@
return (error);
}
-hide void
-lance_shutdown(void *arg)
+hide bool
+lance_shutdown(device_t self, int howto)
{
+ struct lance_softc *sc = device_private(self);
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
+
+ lance_stop(ifp, 0);
- lance_stop((struct ifnet *)arg, 0);
+ return true;
}
/*
Index: src/sys/dev/ic/lancevar.h
diff -u src/sys/dev/ic/lancevar.h:1.12 src/sys/dev/ic/lancevar.h:1.13
--- src/sys/dev/ic/lancevar.h:1.12 Mon Apr 28 20:23:50 2008
+++ src/sys/dev/ic/lancevar.h Fri Sep 4 16:21:24 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: lancevar.h,v 1.12 2008/04/28 20:23:50 martin Exp $ */
+/* $NetBSD: lancevar.h,v 1.13 2009/09/04 16:21:24 tsutsui Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -91,8 +91,6 @@
int sc_havecarrier; /* carrier status */
- void *sc_sh; /* shutdownhook cookie */
-
uint16_t sc_conf3; /* CSR3 value */
uint16_t sc_saved_csr0;/* Value of csr0 at time of interrupt */