Why is it that every function in most device drivers are static? As static functions are not visible outside of the file scope. Then, how do these driver function get called
The kernel has thousands of modules and they are (or used to be) all object files, loaded dynamically via a process similar to linking --or are actually linked-- into the executable. Can you imagine how many name clashes there would be if they were all to export all their function names, as is the default C behavior unless static is specified?
Userspace applications cannot call driver functions directly, but there are other ways to interact.