these are just the first few lines obviously the header contains 100's of lines,I have an understanding of macros and how they can be used,but I don't understand what __SYSCAMM is been defined for? we are defining __SYSCALL(x,y) as a macro but what for? there is nothing after __SYSCALL(x,y)
I checked in bitsperlong.h and thought maybe it was defined in there but nope
The define you show is just defining __SYSCALL(x,y) to be an empty function-like macro. Otherwise anywhere it says __SYSCALL(foo, bar) later it won't be illegal. Exactly why they are doing that would require a perusal of the actual header file that you are looking at since we don't know what system you are on.
You've got your hands on the wrong unistd.h file. That's a lower-level one and would be included by something that would usually define __SYSCALL (which is assembly and so would be different for different architectures).
The unistd.h that you normally include doesn't expose that low-level interface at all. It's just /usr/include/unistd.h