syscall/README.txt: Describe new sycall.csv extensions.
Provides documentation of recent extensions to the format of the syscall/sycall.csv file.
This commit is contained in:
parent
ca8f0aa87e
commit
180ddd0275
|
@ -91,6 +91,9 @@ The format of the CSV file for each line is:
|
||||||
Field 3: Condition for compilation
|
Field 3: Condition for compilation
|
||||||
Field 4: The type of function return value.
|
Field 4: The type of function return value.
|
||||||
Field 5 - N+5: The type of each of the N formal parameters of the function
|
Field 5 - N+5: The type of each of the N formal parameters of the function
|
||||||
|
Fields N+5 - : If the last parameter is "...", then the following fields
|
||||||
|
provide the type and number of of possible optional parameters.
|
||||||
|
See note below about variadic functions
|
||||||
|
|
||||||
Each type field has a format as follows:
|
Each type field has a format as follows:
|
||||||
|
|
||||||
|
@ -108,6 +111,33 @@ Each type field has a format as follows:
|
||||||
cannot cast a union sigval to a uinptr_t either. Rather, we need
|
cannot cast a union sigval to a uinptr_t either. Rather, we need
|
||||||
to cast a specific union member fieldname to uintptr_t.
|
to cast a specific union member fieldname to uintptr_t.
|
||||||
|
|
||||||
|
Variadic Functions:
|
||||||
|
|
||||||
|
General variadic functions which may have an arbitrary number of argument
|
||||||
|
or arbitrary types cannot be represented as system calls. syslog() is a
|
||||||
|
good example. Normally you would work around this by using the non-
|
||||||
|
variadic form of the OS interface that accepts a va_list as an argument,
|
||||||
|
vsyslog() in this case.
|
||||||
|
|
||||||
|
There there are many functions that have a variadic form but take only
|
||||||
|
one or two arguments optional arguments. There can be handled as system
|
||||||
|
calls, but only by treating them as though they had a fixed number of
|
||||||
|
arguments.
|
||||||
|
|
||||||
|
These are are handled in syscall.csv by appending the number and type of
|
||||||
|
optional arguments. For example, consider the open() OS interface. Its
|
||||||
|
prototype is:
|
||||||
|
|
||||||
|
int open(const char *path, int oflag, ...);
|
||||||
|
|
||||||
|
In reality, open may take only a single optional argument of type mode_t
|
||||||
|
and is represented in syscall.cvs like this:
|
||||||
|
|
||||||
|
"open","fcntl.h","","int","const char*","int","...","mode_t"
|
||||||
|
|
||||||
|
The existence of the "mode_t" tells tools/mksyscall that there is at most
|
||||||
|
one optional parameter and, if present, it is of type mode_t.
|
||||||
|
|
||||||
NOTE: This CSV file is used both to support the generate of trap information,
|
NOTE: This CSV file is used both to support the generate of trap information,
|
||||||
but also for the generation of symbol tables. See nuttx/tools/README.txt
|
but also for the generation of symbol tables. See nuttx/tools/README.txt
|
||||||
and nuttx/lib/README.txt for further information.
|
and nuttx/lib/README.txt for further information.
|
||||||
|
|
Loading…
Reference in New Issue