If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below. ** If you are logged in, most ads will not be displayed. **

The Linux system is divided into kernel space and user space. Each space has its own virtual address space, etc.
In kernel space, anything goes and there is no real protection against programmer error / malicious intents.
User space is where applications are programmed. There is generally a much larger virtual address space, and there are a few more protections against programmer error / malicious intent.
Now the kernel provides a kernel API, which is used by device drivers. This API provides a standard interface with which to act with physical devices, and is, like I said, only used by kernel modules.
In user space, there are three types of functions:
- User defined
- Library
- System calls
User defined functions are the sort of one-shot functions used by programmers to simplify their lives ( i.e. calculate_data() or get_input_from_user() )
Library functions are provided by a linkable library, such as the GNU C Library. These functions are more general purpose and can be used by any program that links against them.
System calls are functions that are provided by the kernel to do more low-level operations ( such as read(), write() or fcntl().