- File arch/readme.md — part of check-in [312e446cfc] at 2019-08-25 03:55:01 on branch trunk — remove useless script, delete junk files, credit contributors, add documentation for typesize.c (user: lexi, size: 2525) [annotate] [blame] [check-ins using]
the arch directory of the libk repository contains system-specific definitions and headers, such as error codes and system call tables. none of the files in arch are compiled, but are included from compiled files.
whenever a file is passed to the assembler or C compiler, an include directory is selected based on the chosen target tuple (see /libk.md). thus, when compiling a file that contains the line
#include <system_calls.h> on an x86-32 freebsd system, the compiler will be instructed search (among other directories) the
/arch/x86.fbsd.32 directory for headers.
each subdirectory should be named for a specific target tuple. the top level is reserved for development tools and files of relevance to more than one architecture; for instance, the standardized x86-64 SysV syscall ABI is kept at
/arch/x86.syscall.64.s. these files should not be included directly from any files under the
/mod directory; rather, they should be included from stub files in the appropriate target directory. this provides a consistent header selection mechanism.
arch contains a number of shell scripts. unlike the shell scripts in /global, the shell scripts in /arch are not part of the build process; they are simply developer tools, usually for generating syscall tables for new architectures. the output of the scripts is written directly to the appropriate target directory; these files should be added to the source tree and committed.
mktbl.posix.sh <target> <ABI>: generates the C headers for a particular target based on the systemcalls.h and errortable.h files in its directory. the ABI parameter controls which syscalls are included; the ABI is the second column in the kernel system calls table.
mktbl.linux.errno.sh <target> <ABI>: generates the errno table for a given architecture and ABI. requires the kernel source tree to be installed on the host system.
mktbl.linux.syscall.sh <target> <ABI>: generates the syscall table for a given architecture and ABI. requires the kernel source tree to be installed on the host system. note that some architectures like x86 have separate, architecture-specific tables. this script is not meant to be used with these architectures.
the arch directory also contains C sources for programs that need to be compiled and executed during the build process.
typesize.c: calculates type metadata for the system it is compiled on, producing macros needed for the creation of