[project] Generate syscalls from new interface DSL
This change adds a new interface DSL for specifying objects (with methods) and interfaces (that expose objects, and optionally have their own methods). Significant changes: - Add the new scripts/definitions Python module to parse the DSL - Add the new definitions directory containing DSL definition files - Use cog to generate syscall-related code in kernel and libj6 - Unify ordering of pointer + length pairs in interfaces
This commit is contained in:
@@ -14,7 +14,6 @@ kernel = module("kernel",
|
||||
"clock.cpp",
|
||||
"console.cpp",
|
||||
"cpprt.cpp",
|
||||
"cpu.cpp",
|
||||
"debug.cpp",
|
||||
"debug.s",
|
||||
"device_manager.cpp",
|
||||
@@ -27,7 +26,6 @@ kernel = module("kernel",
|
||||
"interrupts.s",
|
||||
"io.cpp",
|
||||
"log.cpp",
|
||||
"main.cpp",
|
||||
"memory_bootstrap.cpp",
|
||||
"msr.cpp",
|
||||
"objects/channel.cpp",
|
||||
@@ -42,8 +40,6 @@ kernel = module("kernel",
|
||||
"pci.cpp",
|
||||
"scheduler.cpp",
|
||||
"serial.cpp",
|
||||
"syscall.cpp",
|
||||
"syscall.s",
|
||||
"syscalls/channel.cpp",
|
||||
"syscalls/endpoint.cpp",
|
||||
"syscalls/object.cpp",
|
||||
@@ -56,4 +52,15 @@ kernel = module("kernel",
|
||||
"vm_space.cpp",
|
||||
])
|
||||
|
||||
from glob import glob
|
||||
definitions = glob('definitions/**/*.def', recursive=True)
|
||||
sysinc = kernel.add_input("syscalls.inc.cog", deps=definitions)
|
||||
kernel.add_input("syscall.s", deps=[sysinc])
|
||||
|
||||
sysh = kernel.add_input("syscall.h.cog", deps=definitions)
|
||||
sysc = kernel.add_input("syscall.cpp.cog", deps=definitions + [sysh])
|
||||
|
||||
kernel.add_input("main.cpp", deps=[sysh])
|
||||
kernel.add_input("cpu.cpp", deps=[sysh])
|
||||
|
||||
kernel.variables['ldflags'] = ["${ldflags}", "-T", "${source_root}/src/kernel/kernel.ld"]
|
||||
|
||||
Reference in New Issue
Block a user