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@xxxxxxxxx> 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@xxxxxxxxx>: >>> Hi Avantika, >>> >>> On Sat, Jun 18, 2016 at 5:32 PM, Avantika Rawat <avani.rawat@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx >>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >>> >>> _______________________________________________ >>> Kernelnewbies mailing list >>> Kernelnewbies@xxxxxxxxxxxxxxxxx >>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> ----- >> Sayutin Dmitry <cdkrot@xxxxxxxxxx> > > > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies