On Tuesday, September 8, 2020 at 4:24:26 PM UTC+2, Dennis Bieber wrote: > > On Tue, 8 Sep 2020 04:12:05 -0700 (PDT), in > gmane.comp.hardware.beagleboard.user Pavel Yermolenko > <py.ohayo-fowrgoyegzlydzi6cay...@public.gmane.org <javascript:>> wrote: > > >Hello, > > > >Here is an example from chapter 5 of the book "Explore BeagleBone" by > Derek > >Molloy: > > First or second edition? I don't find your (following) example in > the > second edition -- though there /is/ a program using syscall >
2nd Ed. I cloned the source from github.com/derekmolloy/exploringbb.git This link is proposed in the 2nd edidtion of the book (p. xxxiv) > > > > > >debian@beaglebone:~/exploringbb/chp05/syscall$ g++ syscall.cpp -o syscall > >syscall.cpp: In function ‘int main()’: > >syscall.cpp:22:10: error: ‘syscall’ was not declared in this scope > > Note that your source file appears to be named syscall, along with > the > output executable. That may be confusing the compiler some. Especially > since the header file that appears to provide the function is syscall.h > (which could imply there is a syscall.c (or .cpp) somewhere in the system. > > The example in the second edition is a file named glibcTest.cpp in > a > DIRECTORY named syscall. > Here is content of syscall subfolder: debian@beaglebone:~/exploringbb/chp05/syscall$ ls -l *.cpp -rw-r--r-- 1 debian debian 931 Sep 2 13:26 callchmod.cpp -rw-r--r-- 1 debian debian 1234 Sep 2 13:26 glibcTest.cpp -rw-r--r-- 1 debian debian 1345 Sep 2 13:26 syscall.cpp debian@beaglebone:~/exploringbb/chp05/syscall$ So, there are both: *glibcTest.cpp* and *syscall.cpp* Also there is build file: debian@beaglebone:~/exploringbb/chp05/syscall$ more build #!/bin/bash g++ syscall.cpp -o syscall g++ callchmod.cpp -o callchmod debian@beaglebone:~/exploringbb/chp05/syscall$ Obviously Derek Molloy tried his code and undoubtedly he succeeded > >Indeed, I searched for syscall declaration in the toolchain ... and > didn't > >find it: > > > >debian@beaglebone:~/exploringbb/chp05/syscall$ sudo grep -rn > >/usr/include/arm-linux-gnueabihf/ -e "syscall(" > > The odds are good that there is a space between syscall and the ( > > debian@beaglebone:~$ sudo find / -iname "syscall.h" > /usr/include/syscall.h > /usr/include/arm-linux-gnueabihf/sys/syscall.h > /usr/include/arm-linux-gnueabihf/bits/syscall.h > debian@beaglebone:~$ > > Though it turns out to be a definition in /usr/include/unistd.h which is > invoked by /sys/syscall.h (itself invoked by /syscall.h) > > > #ifdef __USE_MISC > /* Invoke `system call' number SYSNO, passing it the remaining arguments. > This is completely system-dependent, and not often useful. > > In Unix, `syscall' sets `errno' for all errors and most calls return -1 > for errors; in many systems you cannot pass arguments or get return > values for all system calls (`pipe', `fork', and `getppid' typically > among them). > > In Mach, all system calls take normal arguments and always return an > error code (zero for success). */ > extern long int syscall (long int __sysno, ...) __THROW; > > #endif /* Use misc. */ > > (NOTE the space I predicted) > Ok > > debian@beaglebone:~$ sudo grep -rn /usr/include/arm-linux-gnueabihf/ -e > "syscall (" > /usr/include/arm-linux-gnueabihf/asm/unistd-common.h:4:#define > __NR_restart_syscall (__NR_SYSCALL_BASE + 0) > /usr/include/arm-linux-gnueabihf/asm/unistd-oabi.h:14:#define __NR_syscall > (__NR_SYSCALL_BASE + 113) > debian@beaglebone:~$ sudo grep -rn /usr/include/ -e "syscall (" > /usr/include/arm-linux-gnueabihf/asm/unistd-common.h:4:#define > __NR_restart_syscall (__NR_SYSCALL_BASE + 0) > /usr/include/arm-linux-gnueabihf/asm/unistd-oabi.h:14:#define __NR_syscall > (__NR_SYSCALL_BASE + 113) > /usr/include/unistd.h:1056:extern long int syscall (long int __sysno, ...) > __THROW; > debian@beaglebone:~$ > > > -- > Dennis L Bieber > > Anyway, what seems to work at Derek Molloy is not working with my toolchain. Thanks. -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/fa6ca044-07c3-4955-a581-9c62870bb0bbo%40googlegroups.com.