VectorLinux

The nuts and bolts => Kernel => Topic started by: Kocil on July 17, 2007, 11:47:28 pm

Title: Help ... syscall was removed, then ???
Post by: Kocil on July 17, 2007, 11:47:28 pm
Hi all.

I've been trying to compile some kernel related packages (libcap, progreiserfs, ...).
All failed with the same culprit, the source code use "_syscall2" macro.
In the old kernel (2.4.x in Slackware 11), that macro was defined in /usr/include/asm/unistd.h,
but in the new kernel (2.6.21.5 Slackware 12), it is not there anymore.

The API changed announcement is here http://lwn.net/Articles/2.6-kernel-api/.

But ... how to fix the error is still a mistery for me.
I've been googling for 1 week for this problem, no luck.
Please help ...

Thanks


Title: Re: Help ... syscall was removed, then ???
Post by: easuter on July 18, 2007, 12:52:35 pm
Kocil, if I remember correctly, one of the changes from 2.4 to 2.6 was that the headers had to be sanitized before being installed to /usr/include. I've made a sanitized 2.6 kernel headers package for the repo a while ago, so this should solve your problem.

Code: [Select]
slapt-get --install kernel-headers
Or get it here: http://vectorlinux.osuosl.org/veclinux-5.8/extra/kernel/kernel-headers-2.6.18.5-i586-4vl58.tlz

There is indeed a file called unistd.h in that package that will be installed to /usr/include.  :)
Title: Re: Help ... syscall was removed, then ???
Post by: Kocil on July 20, 2007, 01:01:01 am
Thanks easuter.

That will solve the problem, because kernel 2.6.18.x is OK.
However, it does not help for the newer kernel.
The _syscall macros have removed since 2.6.19.