[PATCH v7] getrandom system call wrapper [BZ #17252]
Florian Weimer
fweimer@redhat.com
Tue Nov 29 14:40:00 GMT 2016
On 11/29/2016 02:56 PM, Torvald Riegel wrote:
> On Tue, 2016-11-29 at 09:16 +0100, Florian Weimer wrote:
>> On 11/18/2016 05:04 PM, Torvald Riegel wrote:
>>> On Fri, 2016-11-18 at 16:13 +0100, Florian Weimer wrote:
>>>> On 11/18/2016 03:21 PM, Torvald Riegel wrote:
>>>>
>>>>> As discussed in the thread, there are different opinions about what the
>>>>> default should be. There are reasonable arguments for both options. In
>>>>> such a case, it seems better to make the choice explicit, simply from an
>>>>> ease-of-use and interface design perspective.
>>>>
>>>> Unfortunately, this is not the approach that POSIX has chosen. But
>>>> there is precedent for doing our own thing in this area: the "c" flag
>>>> for fopen. We cannot use the existing flags argument in getrandom for
>>>> this purpose because its layout is controlled by the kernel.
>>>
>>> It seems a separate argument would be better than using up space in the
>>> existing flags. Cancellation is something we add, so we should add to
>>> the underlying interface too, instead of messing with it.
>>
>> Is this separate argument your personal preference, or are you just
>> trying to find common ground and reconcile different positions?
>
> It's my personal preference. Which is partially motivated by trying to
> find common ground between the different use cases (and not finding
> obvious common group, so therefore make the choice explicit).
Hmph.
I was about to propose a new patch, with two functions:
getrandom, as I posted it the last time (an unadorned system call which
is also a cancellation point).
getentropy, a thin wrapper which avoids returning EINTR (to match
OpenBSD and Solaris) and is not a cancellation point. It would return
EIO on short reads, too.
The documentation would have said that getrandom is a lower-level
function for those which need GRND_RANDOM or cancellation, and everyone
else should call getrandom.
Would this work for you?
Thanks,
Florian
More information about the Libc-alpha
mailing list