What is the purpose of defining _LINUX_EXPORT_H in include/linux/export.h? It seems to be defined in this file and never referenced anywhere else. Is it redundant?
If you look carefully at the file, it starts and ends with these lines:
#ifndef _LINUX_EXPORT_H #define _LINUX_EXPORT_H ... #endif /* _LINUX_EXPORT_H */
These lines mean that if the file is included twice (either through a mistake or through including another file that includes this file) then the second time around the value is defined, and so the whole file is effectively skipped.
These are commonly known as "header guards" or "include guards" and you'll note that many of the standard include files use this pattern; e.g
#ifndef _PWD_H #define _PWD_H 1