Regarding getrandom syscall
Manuel Pégourié-Gonnard
mpg at elzevir.fr
Tue Jun 21 15:10:50 EDT 2016
Hi,
Maybe your unistd.h comes from an older kernel? That would explain why
it doesn't define that symbol.
Here [1] is some code using that syscall successfully, you can see it
looks a lot like Sayutin's code, except it does a few more compile-time
and runtime checks to fallback on using /dev/urandom if necessary.
[1]:
https://github.com/ARMmbed/mbedtls/blob/dd9895d8101f17ce804830472cbb140eba1c46a0/library/entropy_poll.c#L85
Manuel.
On 21/06/2016 15:41, Avantika Rawat wrote:
> Hi,
>
> Thanks for the suggestion but i am getting following error
>
> error: 'SYS_getrandom' undeclared (first use in this function)
>
> then i have replaced the SYS_getrandom by 275 in syscall(275, -- args--);
> as 275 is the __NR_getrandom defines in unistd.h file, but it is
> returning -1.
> Can somebody tell me what i am missing here??
>
> . Also in /proc/kallsyms it is showing two syscalls added for getrandom
>
> ffffffff80417a38 T SyS_getrandom
> ffffffff80417a38 T sys_getrandom
>
> On Sat, Jun 18, 2016 at 7:12 PM, Sayutin Dmitry <cdkrot at yandex.ru> wrote:
>> Well, in fact it is not hard.
>>
>> Just use syscall(2) provided by libc.
>>
>> You need to provide to this function syscall id and syscall args.
>> Syscall id can be retrieved from macro constant
>> Should look something like:
>>
>> #define _GNU_SOURCE
>> #include <unistd.h>
>> #include <sys/syscall.h>
>>
>> syscall(SYS_getrandom, -- your - args - here --);
>>
>> It returns long value - the result of syscall.
>> If it is between [-4095; -1] then it is negated errno, otherways it is return value.
>>
>>
>> 18.06.2016, 16:32, "Anoop" <anoop.chargotra at gmail.com>:
>>> Hi Avantika,
>>>
>>> On Sat, Jun 18, 2016 at 5:32 PM, Avantika Rawat <avani.rawat at gmail.com> wrote:
>>>> Hi ALL,
>>>>
>>>> I am trying to use getrandom syscall in kernel 3.10.20 by following this
>>>> link
>>>>
>>>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c6e9d6f38894798696f23c8084ca7edbf16ee895
>>>>
>>>> i have compiled the kernel and now want to call the getrandom syscall from
>>>> userspace to generate random numbers. But i am getting following error while
>>>> calling the getrandom () from userspace.
>>>>
>>>> (.text.startup+0x18): undefined reference to `getrandom'
>>>> (.text.startup+0x1c): undefined reference to `getrandom'
>>>
>>> Your user space program will not know where 'getrandom' is defined
>>> unless it's in the C library. You need to research more on how to call
>>> custom system calls.
>>>
>>> -Anoop
>>>
>>>> --
>>>> Regards,
>>>> Avantika Rawat
>>>>
>>>> _______________________________________________
>>>> Kernelnewbies mailing list
>>>> Kernelnewbies at kernelnewbies.org
>>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>>
>>> _______________________________________________
>>> Kernelnewbies mailing list
>>> Kernelnewbies at kernelnewbies.org
>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>> -----
>> Sayutin Dmitry <cdkrot at yandex.com>
>
>
>
More information about the Kernelnewbies
mailing list