linux include files

what is the relationship between
/usr/include/sys/*.h
and
/usr/include/unistd.h ?

Fuctions in unistd.h are syscalls. Do the fuctions in sys/*.h call syscalls?

The <unistd.h> header defines miscellaneous symbolic constants and types, and declares miscellaneous functions. See <unistd.h>. I don't think I have ever seen "syscalls" defined in this header nor would I expect to see them defined there.

/usr/include/sys tends to contain platform specific headers rather than general purpose headers.

Aren't write(), read() in unistd.h syscalls?

Why can't socket() in sys/socket.h be seen as a syscall, since it is provieded by OS?

They are also library calls.

unistd.h is very very old and kind of a grab-bag of stuff.

Why can't socket() in sys/socket.h be seen as a syscall, since it is provieded by OS?

It can be a system call but isn't always. On some systems it is, or at least used to be, a library.

thank you.