diff options
author | arr <arr@FreeBSD.org> | 2002-05-02 07:27:29 +0000 |
---|---|---|
committer | arr <arr@FreeBSD.org> | 2002-05-02 07:27:29 +0000 |
commit | de0c0b47fee1edb13c152bca6704b78b08682383 (patch) | |
tree | 5d333b83d9a97872390d56c2e7dbe39370def59e /sys/netatm | |
parent | f7f01600de16995a3b8291a1e6f854e750acf936 (diff) | |
download | FreeBSD-src-de0c0b47fee1edb13c152bca6704b78b08682383.zip FreeBSD-src-de0c0b47fee1edb13c152bca6704b78b08682383.tar.gz |
- Replaced the Atm_connection storage pool with an uma_zone of
Atm_connection items.
- Replaced the Atm_connvc storage pool with an uma_zone of Atm_connvc
items.
- Created void atm_cm_init(void *) and added it to the netatm init code.
I'm thinking that there will definetly be more ``subsystem'' init
functions to be added so I'll probably change these calls to be a for
loop through init routines (or something).
Diffstat (limited to 'sys/netatm')
-rw-r--r-- | sys/netatm/atm_cm.c | 56 | ||||
-rw-r--r-- | sys/netatm/atm_cm.h | 3 | ||||
-rw-r--r-- | sys/netatm/atm_subr.c | 1 |
3 files changed, 31 insertions, 29 deletions
diff --git a/sys/netatm/atm_cm.c b/sys/netatm/atm_cm.c index ff6b34b..05080ec 100644 --- a/sys/netatm/atm_cm.c +++ b/sys/netatm/atm_cm.c @@ -103,20 +103,21 @@ static struct { {SSCOP_INIT, SSCOP_TERM}, /* CMAPI_SSCOP */ }; +static uma_zone_t atm_connection_zone; +static uma_zone_t atm_connvc_zone; -static struct sp_info atm_connection_pool = { - "atm connection pool", /* si_name */ - sizeof(Atm_connection), /* si_blksiz */ - 10, /* si_blkcnt */ - 100 /* si_maxallow */ -}; -static struct sp_info atm_connvc_pool = { - "atm connection vcc pool", /* si_name */ - sizeof(Atm_connvc), /* si_blksiz */ - 10, /* si_blkcnt */ - 100 /* si_maxallow */ -}; +void +atm_cm_init(void *arg) +{ + atm_connection_zone = uma_zcreate("atm connection", + sizeof(Atm_connection), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + uma_zone_set_max(atm_connection_zone, 100); + + atm_connvc_zone = uma_zcreate("atm connvc", sizeof(Atm_connvc), NULL, + NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + uma_zone_set_max(atm_connvc_zone, 100); +} /* * Initiate Outgoing ATM Call @@ -173,7 +174,7 @@ atm_cm_connect(epp, token, ap, copp) /* * Get a connection block */ - cop = (Atm_connection *)atm_allocate(&atm_connection_pool); + cop = uma_zalloc(atm_connection_zone, 0); if (cop == NULL) return (ENOMEM); @@ -404,7 +405,7 @@ atm_cm_connect(epp, token, ap, copp) /* * Get a connection VCC block */ - cvp = (Atm_connvc *)atm_allocate(&atm_connvc_pool); + cvp = uma_zalloc(atm_connvc_zone, 0); if (cvp == NULL) { err = ENOMEM; goto donex; @@ -494,7 +495,7 @@ done: * Undo any partial setup stuff */ if (cop) - atm_free((caddr_t)cop); + uma_zfree(atm_connection_zone, cop); } else { /* * Finish connection setup @@ -550,7 +551,7 @@ atm_cm_listen(epp, token, ap, copp) /* * Get a connection block */ - cop = (Atm_connection *)atm_allocate(&atm_connection_pool); + cop = uma_zalloc(atm_connection_zone, 0); if (cop == NULL) return (ENOMEM); @@ -741,7 +742,7 @@ done: if (cop) { if (cop->co_lattr) uma_zfree(atm_attributes_zone, cop->co_lattr); - atm_free((caddr_t)cop); + uma_zfree(atm_connection_zone, cop); } } else { /* @@ -814,7 +815,7 @@ atm_cm_addllc(epp, token, llc, ecop, copp) /* * Get a connection block */ - cop = (Atm_connection *)atm_allocate(&atm_connection_pool); + cop = uma_zalloc(atm_connection_zone, 0); if (cop == NULL) return (ENOMEM); @@ -904,7 +905,7 @@ done: * Undo any partial setup stuff */ if (cop) - atm_free((caddr_t)cop); + uma_zfree(atm_connection_zone, cop); } else { /* * Pass new connection back to caller @@ -1265,7 +1266,7 @@ atm_cm_incoming(vcp, ap) /* * Get a connection VCC block */ - cvp = (Atm_connvc *)atm_allocate(&atm_connvc_pool); + cvp = uma_zalloc(atm_connvc_zone, 0); if (cvp == NULL) { err = ENOMEM; goto fail; @@ -1312,7 +1313,7 @@ fail: * Free any resources */ if (cvp) - atm_free((caddr_t)cvp); + uma_zfree(atm_connvc_zone, cvp); return (err); } @@ -1587,8 +1588,7 @@ atm_cm_incall(cvp) /* * Need a new connection block */ - cop = (Atm_connection *) - atm_allocate(&atm_connection_pool); + cop = uma_zalloc(atm_connection_zone, 0); if (cop == NULL) { cvp->cvc_attr.cause = atm_cause_tmpl; cvp->cvc_attr.cause.v.cause_value = @@ -1691,7 +1691,7 @@ atm_cm_incall(cvp) * Clean up loose ends */ if (cop) - atm_free((caddr_t)cop); + uma_zfree(atm_connection_zone, cop); /* * Call has been accepted @@ -1707,7 +1707,7 @@ fail: * Clean up loose ends */ if (cop) - atm_free((caddr_t)cop); + uma_zfree(atm_connection_zone, cop); if (cvp->cvc_attr.cause.tag != T_ATM_PRESENT) { cvp->cvc_attr.cause = atm_cause_tmpl; @@ -2395,8 +2395,7 @@ atm_cm_closeconn(cop, cause) * Free the connection block */ cop->co_state = COS_FREE; - atm_free((caddr_t)cop); - + uma_zfree(atm_connection_zone, cop); return; } @@ -2572,8 +2571,7 @@ atm_cm_closevc(cvp) /* * Finally, free our own control blocks */ - atm_free((caddr_t)cvp); - + uma_zfree(atm_connvc_zone, cvp); return; } diff --git a/sys/netatm/atm_cm.h b/sys/netatm/atm_cm.h index 9c1b50c..b0a471a 100644 --- a/sys/netatm/atm_cm.h +++ b/sys/netatm/atm_cm.h @@ -343,6 +343,9 @@ struct atm_cm_stat { u_long cms_rcvconn; /* Packets dropped, bad conn state */ u_long cms_rcvconnvc; /* Packets dropped, bad connvc state */ }; + +void atm_cm_init(void *); + #endif /* _KERNEL */ #endif /* _NETATM_ATM_CM_H */ diff --git a/sys/netatm/atm_subr.c b/sys/netatm/atm_subr.c index edc2b8e..84a74d0 100644 --- a/sys/netatm/atm_subr.c +++ b/sys/netatm/atm_subr.c @@ -141,6 +141,7 @@ atm_initialize() /* * Initialize subsystems */ + atm_cm_init(NULL); atm_aal5_init(); /* |