While I was doing some reading on system calls, I did a search for syscalls.h to find the header file in LXR. The search results puzzled me. There is a dozen of syscalls.h files coming from directories under arch/_arch_name_/include/asm. These are ok, they are architecture specific definitions or something else needed. The question is why do we have two different syscalls.h headers under both include/linux and include/asm-generic?
Also, I want to find out that what include/linux headers are for and what include/asm-generic headers are for. How do they differentiate between each other? What is the logic behind having two separate header folders? How do they relate to each other?
Thanks
I’ve asked this question on Kernel Newbies ML. I got the following answer which makes things clear: