Example of A System Call
Calling an operating system directly is generally impossible in the presence of protected memory. The OS runs at a more privileged level (kernel mode) than the user (user mode); a (software) interrupt is used to make requests to the operating system. This is rarely a feature in a higher-level language, and so wrapper functions for system calls are written using inline assembler.
The following C code are samples including a system call wrapper in AT&T assembler syntax with the GNU Assembler. They are normally written with the aid of macros; the full code is included for clarity.
The format of basic inline assembly is very much straightforward. Its basic form is
asm("assembly code");Example:
asm("movl %ecx, %eax"); /* moves the contents of ecx to eax */OR
__asm__("movb %bh, (%eax)"); /* moves the byte from bh to the memory pointed by eax */Both asm
and __asm__
are valid. __asm__
can be used if the keyword asm
conflicts with something in your program.
Read more about this topic: Inline Assembler
Famous quotes containing the words system and/or call:
“Few white citizens are acquainted with blacks other than those projected by the media and the socalled educational system, which is nothing more than a system of rewards and punishments based upon ones ability to pledge loyalty oaths to Anglo culture. The media and the educational system are the prime sources of racism in the United States.”
—Ishmael Reed (b. 1938)
“The obscure only exists that it may cease to exist. In it lies the opportunity of all victory and all progress. Whether it call itself fatality, death, night, or matter, it is the pedestal of life, of light, of liberty and the spirit. For it represents resistancethat is to say, the fulcrum of all activity, the occasion for its development and its triumph.”
—Henri-Frédéric Amiel (18211881)