tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: qsort_r again



In article <20160827201952.GB6028%netbsd.org@localhost>,
David Holland  <dholland-tech%netbsd.org@localhost> wrote:
>(Cc: tech-kern because of kheapsort())
>
>Some time back I made a set of patches for qsort_r(), that is, a
>version of qsort that allows passing a data pointer through, along
>with corresponding mergesort_r() and heapsort_r().
>
>After some discussion the conclusion was that instead of using thunks
>to implement qsort in terms of qsort_r, it was better to implement
>both versions in terms of a common internal version. The following
>patchset does that.
>
>heapsort() is used in two places in the kernel as kheapsort(), which
>takes an extra argument so that the heapsort code itself doesn't have
>to know how to malloc in the kernel. I have done the following:
>   - add kheapsort_r()
>   - change the signature of plain kheapsort() to move the extra
>     argument to a place it is less likely to cause confusion with the
>     data argument;
>   - update the callers for the signature change;
>but I have not changed either caller to call kheapsort_r
>instead. Based on the code, this should probably be done later; then
>the plain kheapsort can be removed.
>
>Note that this set of names and signatures matches what's in Linux.
>Apparently FreeBSD did it differently, but there are reasons to prefer
>this arrangement of arguments.
>
>Joerg also says that the _r names are inappropriate because the
>originals are reentrant, but I think that's tilting at windmills and
>it's more useful to be compatible.

I agree with joerg, but that's water under the bridge...
Go for it.

christos



Home | Main Index | Thread Index | Old Index