Next: 4.3.1 Linkage Requirements for
Up: 4. The FiST Language
Previous: 4.2 Language Requirements
4.3 Translator Requirements
I set forth the following requirements for the translator:
- The goal of portability effectively requires that the translator
output ANSI C code. In particular, the output should compile with strong
error checking such as produced by gcc -ansi -Wall -Werror.
- The generated code should not require modifications to existing
interfaces and kernel facilities, nor should it attempt to modify existing
interfaces or file systems at run time.
- The translator should generate runnable kernel-resident code as
described in Section sec-fist-trans-link.
- The translator should also be able to generate runnable user-level
file system code as described in Section sec-fist-user-level.
- The translator should generate kernel modules that can be dynamically
loaded into a running kernel using facilities such as modload
[SMCC93a], or linked with other kernel objects to produce a
static image of a new kernel [SMCC91]. The latter can then be
copied over to the root directory and run when the machine is next rebooted.
- The translator should take the worst-case approach. Any minor problem
with the input file or the code generation phase should result in fatal
errors. No kernel module should be produced if there is any known chance
that it will not run properly.
- Every effort should be made to generate fast code.
- The translator itself should be written using tools and languages that
make it easily portable to other environments.
Next: 4.3.1 Linkage Requirements for
Up: 4. The FiST Language
Previous: 4.2 Language Requirements
Erez Zadok
1999-12-07