Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Oct 2017 22:12:22 -0700
From:      "Ngie Cooper (yaneurabeya)" <yaneurabeya@gmail.com>
To:        Matt Joras <mjoras@FreeBSD.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r324541 - in head: share/man/man9 sys/kern sys/sys
Message-ID:  <365AD758-5761-4BD4-A80E-8EF2EA84EAAA@gmail.com>
In-Reply-To: <201710112153.v9BLroeR007323@repo.freebsd.org>
References:  <201710112153.v9BLroeR007323@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_C4B17B83-4374-47E5-8CC4-F3496C26AE87
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On Oct 11, 2017, at 14:53, Matt Joras <mjoras@FreeBSD.org> wrote:
>=20
> Author: mjoras
> Date: Wed Oct 11 21:53:50 2017
> New Revision: 324541
> URL: https://svnweb.freebsd.org/changeset/base/324541
>=20
> Log:
>  Add clearing function for unr(9).
>=20
>  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.
>=20
>  Reviewed by:	cem, lidl
>  Approved by:	rstone (mentor)
>  Sponsored by:	Dell EMC Isilon
>  Differential Revision:	https://reviews.freebsd.org/D12591
>=20
> Modified:
>  head/share/man/man9/Makefile
>  head/share/man/man9/unr.9
>  head/sys/kern/subr_unit.c
>  head/sys/sys/systm.h
>=20
> Modified: head/share/man/man9/Makefile
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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=3D	accept_filter.9 \
> MLINKS=3D	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
>=20
> Modified: head/share/man/man9/unr.9
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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.
>=20
> Modified: head/sys/kern/subr_unit.c
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- 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);
> }
>=20
> +void
> +clear_unrhdr(struct unrhdr *uh)
> +{
> +	struct unr *up, *uq;
> +
> +	KASSERT(TAILQ_EMPTY(&uh->ppfree),
> +	    ("unrhdr has postponed item for free"));
> +	up =3D TAILQ_FIRST(&uh->head);
> +	while (up !=3D NULL) {

Could this be done with TAILQ_FOREACH_SAFE?
-Ngie

--Apple-Mail=_C4B17B83-4374-47E5-8CC4-F3496C26AE87
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJZ4Zy3AAoJEPWDqSZpMIYVK7gQAL21exfm7Dzwiv+5DPPjurWW
H7YkznsfYSDNIEuSx7TJJuQ4iawtShKYh8+fyGeKSDwclwqqVaKZqeqOUqUOCYch
xt4U7cA7MJbSru6l8pn8Vc3B78dEWLZw/1PrAhbhjI7nT8fWMiNJeP9Bs26Px4QE
91YYHHoopqKh/gRI3tstPFmqCTzKgBbUgvS3BsPHC/M6tlgR+AWoZw6AK2O2FuMt
EU6nxbBk5Lw2WLY2Daf7I+GA19bS2homXGQO5yHO3UTtyI6NgjXoEGUgKwnJATmT
ibQVRNh38gGWC+ov808VkL9KHLqzgZvc1+aXG645DdylTN3pZM4lSGw2KY8FaF0p
D8AZRq8bMQS8h2GBHQXDKYX1FITkd9IbqU8P+RPVAQoOn9RW7neTc/Kja+UCP8I/
P/lIhjPqFlsH+dHKMIevU9GbCSLHKPzNnxs4uG1Rjk/doqClnHCwvl+Of1Um7KoP
+gJpSiWji1Yk/TH/DD9rZ9ZWIxE8ussgLiUWMHen09y5e/doLfz7jpB4pXwbeoQ1
m88B6KJB1xTkmKnH6KUauWOe7ALxqomPwMu8BJLuqCjIo6LSgWcs6oc41qiZa1wb
iByiSw6u6RCo/Rhzhzlvud3vpIA8SfcaYi7jhz1IMal2zzj2PfhFK863ARCST2nl
dCfFjNoP0fNp6sScEg0v
=poKv
-----END PGP SIGNATURE-----

--Apple-Mail=_C4B17B83-4374-47E5-8CC4-F3496C26AE87--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?365AD758-5761-4BD4-A80E-8EF2EA84EAAA>