summaryrefslogtreecommitdiffstats
path: root/sys/netatm/spans/spans_arp.c
diff options
context:
space:
mode:
authorarr <arr@FreeBSD.org>2002-05-24 00:39:58 +0000
committerarr <arr@FreeBSD.org>2002-05-24 00:39:58 +0000
commit0239286d2c509dd5fb5136bf070206cb641023f1 (patch)
tree04d4572458bd827a7bd3300d9f1628f4733762c9 /sys/netatm/spans/spans_arp.c
parentd756e3ff88238ac6a0deb498bda602333d20ddb3 (diff)
downloadFreeBSD-src-0239286d2c509dd5fb5136bf070206cb641023f1.zip
FreeBSD-src-0239286d2c509dd5fb5136bf070206cb641023f1.tar.gz
- Remove a few storage pools and replace them with UMA zones. The spans
code is now storage pool free, so I believe this only leaves the uni base not cleaned.
Diffstat (limited to 'sys/netatm/spans/spans_arp.c')
-rw-r--r--sys/netatm/spans/spans_arp.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/sys/netatm/spans/spans_arp.c b/sys/netatm/spans/spans_arp.c
index 107bb19..e0c83f9 100644
--- a/sys/netatm/spans/spans_arp.c
+++ b/sys/netatm/spans/spans_arp.c
@@ -67,6 +67,8 @@
#include <netatm/spans/spans_var.h>
#include <netatm/spans/spans_cls.h>
+#include <vm/uma.h>
+
#ifndef lint
__RCSID("@(#) $FreeBSD$");
#endif
@@ -93,12 +95,7 @@ static struct atm_time spansarp_rtimer = {0, 0}; /* Retry timer */
static struct spansarp *spansarp_retry_head = NULL; /* Retry chain */
-static struct sp_info spansarp_pool = {
- "spans arp pool", /* si_name */
- sizeof(struct spansarp), /* si_blksiz */
- 10, /* si_blkcnt */
- 100 /* si_maxallow */
-};
+static uma_zone_t spansarp_zone;
/*
@@ -175,7 +172,7 @@ spansarp_svcout(ivp, dst)
/*
* Now get the new arp entry
*/
- sap = (struct spansarp *)atm_allocate(&spansarp_pool);
+ sap = uma_zalloc(spansarp_zone, M_WAITOK);
if (sap == NULL) {
(void) splx(s);
return (MAP_FAILED);
@@ -362,10 +359,21 @@ spansarp_vcclose(ivp)
* Free entry
*/
SPANSARP_DELETE(sap);
- atm_free((caddr_t)sap);
+ uma_zfree(spansarp_zone, sap);
(void) splx(s);
}
+/*
+ * Called when the spans module is loaded.
+ */
+void
+spansarp_start()
+{
+
+ spansarp_zone = uma_zcreate("spansarp", sizeof(struct spansarp),
+ NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
+ uma_zone_set_max(spansarp_zone, 100);
+}
/*
* Process module unloading notification
@@ -403,7 +411,7 @@ spansarp_stop()
/*
* Free our storage pools
*/
- atm_release_pool(&spansarp_pool);
+ uma_zdestroy(spansarp_zone);
}
@@ -484,7 +492,7 @@ spansarp_ipdact(clp)
* Delete entry from arp table
*/
SPANSARP_DELETE(sap);
- atm_free((caddr_t)sap);
+ uma_zfree(spansarp_zone, sap);
}
}
@@ -712,7 +720,7 @@ spansarp_input(clp, m)
/*
* Source unknown and we're the target - add new entry
*/
- sap = (struct spansarp *)atm_allocate(&spansarp_pool);
+ sap = uma_zalloc(spansarp_zone, M_WAITOK);
if (sap) {
sap->sa_dstip.s_addr = in_src.s_addr;
sap->sa_dstatm.address_format = T_ATM_SPANS_ADDR;
@@ -837,7 +845,7 @@ spansarp_aging(tip)
* Delete unused entry
*/
SPANSARP_DELETE(sap);
- atm_free((caddr_t)sap);
+ uma_zfree(spansarp_zone, sap);
}
}
}
@@ -953,7 +961,7 @@ spansarp_ioctl(code, data, arg1)
/*
* No, get a new arp entry
*/
- sap = (struct spansarp *)atm_allocate(&spansarp_pool);
+ sap = uma_zalloc(spansarp_zone, M_WAITOK);
if (sap == NULL) {
err = ENOMEM;
break;
@@ -1063,7 +1071,7 @@ spansarp_ioctl(code, data, arg1)
*/
UNLINK(sap, struct spansarp, spansarp_retry_head, sa_rnext);
SPANSARP_DELETE(sap);
- atm_free((caddr_t)sap);
+ uma_zfree(spansarp_zone, sap);
break;
case AIOCS_INF_ARP:
OpenPOWER on IntegriCloud