svn commit: r324541 - in head: share/man/man9 sys/kern sys/sys
Ngie Cooper (yaneurabeya)
yaneurabeya at gmail.com
Sat Oct 14 05:12:18 UTC 2017
> On Oct 11, 2017, at 14:53, Matt Joras <mjoras at FreeBSD.org> wrote:
>
> Author: mjoras
> Date: Wed Oct 11 21:53:50 2017
> New Revision: 324541
> URL: https://svnweb.freebsd.org/changeset/base/324541
>
> Log:
> Add clearing function for unr(9).
>
> Previously before you could call unrhdr_delete you needed to
> individually free every allocated unit. It is useful to be able to tear
> down the unr without having to go through this process, as it is
> significantly faster than freeing the individual units.
>
> Reviewed by: cem, lidl
> Approved by: rstone (mentor)
> Sponsored by: Dell EMC Isilon
> Differential Revision: https://reviews.freebsd.org/D12591
>
> Modified:
> head/share/man/man9/Makefile
> head/share/man/man9/unr.9
> head/sys/kern/subr_unit.c
> head/sys/sys/systm.h
>
> Modified: head/share/man/man9/Makefile
> ==============================================================================
> --- head/share/man/man9/Makefile Wed Oct 11 20:36:22 2017 (r324540)
> +++ head/share/man/man9/Makefile Wed Oct 11 21:53:50 2017 (r324541)
> @@ -414,6 +414,7 @@ MAN= accept_filter.9 \
> MLINKS= unr.9 alloc_unr.9 \
> unr.9 alloc_unrl.9 \
> unr.9 alloc_unr_specific.9 \
> + unr.9 clear_unrhdr.9 \
> unr.9 delete_unrhdr.9 \
> unr.9 free_unr.9 \
> unr.9 new_unrhdr.9
>
> Modified: head/share/man/man9/unr.9
> ==============================================================================
> --- head/share/man/man9/unr.9 Wed Oct 11 20:36:22 2017 (r324540)
> +++ head/share/man/man9/unr.9 Wed Oct 11 21:53:50 2017 (r324541)
> @@ -24,11 +24,12 @@
> .\"
> .\" $FreeBSD$
> .\"
> -.Dd July 5, 2010
> +.Dd October 4, 2017
> .Dt UNR 9
> .Os
> .Sh NAME
> .Nm new_unrhdr ,
> +.Nm clear_unrhdr ,
> .Nm delete_unrhdr ,
> .Nm alloc_unr ,
> .Nm alloc_unr_specific ,
> @@ -39,6 +40,8 @@
> .Ft "struct unrhdr *"
> .Fn new_unrhdr "int low" "int high" "struct mtx *mutex"
> .Ft void
> +.Fn clear_unrhdr "struct unrhdr *uh"
> +.Ft void
> .Fn delete_unrhdr "struct unrhdr *uh"
> .Ft int
> .Fn alloc_unr "struct unrhdr *uh"
> @@ -70,8 +73,16 @@ is not
> .Dv NULL ,
> it is used for locking when allocating and freeing units.
> Otherwise, internal mutex is used.
> +.It Fn clear_unrhdr uh
> +Clear all units from the specified unit number allocator entity.
> +This function resets the entity as if it were just initialized with
> +.Fn new_unrhdr .
> .It Fn delete_unrhdr uh
> -Destroy specified unit number allocator entity.
> +Delete specified unit number allocator entity.
> +This function frees the memory associated with the entity, it does not free
> +any units.
> +To free all units use
> +.Fn clear_unrhdr .
> .It Fn alloc_unr uh
> Return a new unit number.
> The lowest free number is always allocated.
>
> Modified: head/sys/kern/subr_unit.c
> ==============================================================================
> --- head/sys/kern/subr_unit.c Wed Oct 11 20:36:22 2017 (r324540)
> +++ head/sys/kern/subr_unit.c Wed Oct 11 21:53:50 2017 (r324541)
> @@ -366,6 +366,27 @@ delete_unrhdr(struct unrhdr *uh)
> Free(uh);
> }
>
> +void
> +clear_unrhdr(struct unrhdr *uh)
> +{
> + struct unr *up, *uq;
> +
> + KASSERT(TAILQ_EMPTY(&uh->ppfree),
> + ("unrhdr has postponed item for free"));
> + up = TAILQ_FIRST(&uh->head);
> + while (up != NULL) {
Could this be done with TAILQ_FOREACH_SAFE?
-Ngie
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20171013/61a17d6e/attachment.sig>
More information about the svn-src-all
mailing list