Rename sched and alloc compartments to scheduler and allocator. (#403) This is to comply with the coding guidelines (no abbreviations). David says that the rego policies for cheriot-audit should already be compatible with this change in a backwards compatible way.
diff --git a/docs/Allocator.md b/docs/Allocator.md index 96f3c5f..fe8a0b2 100644 --- a/docs/Allocator.md +++ b/docs/Allocator.md
@@ -29,10 +29,10 @@ "contents": "00001000 00000000 00000000 00000000 00000000 00000000", "kind": "SealedObject", "sealing_type": { - "compartment": "alloc", + "compartment": "allocator", "key": "MallocKey", "provided_by": "build/cheriot/cheriot/release/cherimcu.allocator.compartment", - "symbol": "__export.sealing_type.alloc.MallocKey" + "symbol": "__export.sealing_type.allocator.MallocKey" } }, ```
diff --git a/docs/WritingADeviceDriver.md b/docs/WritingADeviceDriver.md index e24ce92..f8ffeb7 100644 --- a/docs/WritingADeviceDriver.md +++ b/docs/WritingADeviceDriver.md
@@ -118,10 +118,10 @@ "contents": "10000101", "kind": "SealedObject", "sealing_type": { - "compartment": "sched", + "compartment": "scheduler", "key": "InterruptKey", "provided_by": "build/cheriot/cheriot/release/example-firmware.scheduler.compartment", - "symbol": "__export.sealing_type.sched.InterruptKey" + "symbol": "__export.sealing_type.scheduler.InterruptKey" } ```
diff --git a/sdk/core/loader/boot.cc b/sdk/core/loader/boot.cc index f0c99b8..bef5a7a 100644 --- a/sdk/core/loader/boot.cc +++ b/sdk/core/loader/boot.cc
@@ -1364,7 +1364,7 @@ build<ExportEntry>( imgHdr.scheduler().exportTable, LA_ABS( - __export_sched__ZN5sched15exception_entryEP19TrustedStackGenericILj0EEjjj)) + __export_scheduler__ZN5sched15exception_entryEP19TrustedStackGenericILj0EEjjj)) ->functionStart; auto schedExceptionEntry = build_pcc(imgHdr.scheduler()); schedExceptionEntry.address() += exceptionEntryOffset; @@ -1460,7 +1460,8 @@ // invoke the exception entry point. auto exportEntry = build<ExportEntry>( imgHdr.scheduler().exportTable, - LA_ABS(__export_sched__ZN5sched15scheduler_entryEPK16ThreadLoaderInfo)); + LA_ABS( + __export_scheduler__ZN5sched15scheduler_entryEPK16ThreadLoaderInfo)); schedPCC.address() += exportEntry->functionStart; Debug::log("Will return to scheduler entry point: {}", schedPCC);
diff --git a/sdk/core/scheduler/main.cc b/sdk/core/scheduler/main.cc index ae09922..0aef309 100644 --- a/sdk/core/scheduler/main.cc +++ b/sdk/core/scheduler/main.cc
@@ -193,7 +193,7 @@ return &(reinterpret_cast<Thread *>(threadSpaces))[threadId - 1]; } - [[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") + [[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") scheduler_entry(const ThreadLoaderInfo *info) { Debug::Invariant(Capability{info}.length() == @@ -243,10 +243,11 @@ } [[cheri::interrupt_state(disabled)]] TrustedStack * - __cheri_compartment("sched") exception_entry(TrustedStack *sealedTStack, - size_t mcause, - size_t mepc, - size_t mtval) + __cheri_compartment("scheduler") + exception_entry(TrustedStack *sealedTStack, + size_t mcause, + size_t mepc, + size_t mtval) { if constexpr (DebugScheduler) { @@ -408,7 +409,7 @@ using namespace sched; // thread APIs -SystickReturn __cheri_compartment("sched") thread_systemtick_get() +SystickReturn __cheri_compartment("scheduler") thread_systemtick_get() { uint64_t ticks = Thread::ticksSinceBoot; uint32_t hi = ticks >> 32; @@ -418,7 +419,7 @@ return ret; } -__cheriot_minimum_stack(0x90) int __cheri_compartment("sched") +__cheriot_minimum_stack(0x90) int __cheri_compartment("scheduler") thread_sleep(Timeout *timeout, uint32_t flags) { STACK_CHECK(0x90);
diff --git a/sdk/include/futex.h b/sdk/include/futex.h index ef1e7ed..42a9676 100644 --- a/sdk/include/futex.h +++ b/sdk/include/futex.h
@@ -38,7 +38,7 @@ * - `-EINVAL` if the arguments are invalid. * - `-ETIMEOUT` if the timeout expires. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") futex_timed_wait(Timeout *ticks, const uint32_t *address, uint32_t expected, @@ -72,5 +72,5 @@ * The return value for a successful call is the number of threads that were * woken. `-EINVAL` is returned for invalid arguments. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") futex_wake(uint32_t *address, uint32_t count);
diff --git a/sdk/include/interrupt.h b/sdk/include/interrupt.h index 7419c60..b72af41 100644 --- a/sdk/include/interrupt.h +++ b/sdk/include/interrupt.h
@@ -82,7 +82,7 @@ */ #define DEFINE_INTERRUPT_CAPABILITY(name, number, mayWait, mayComplete) \ DEFINE_STATIC_SEALED_VALUE(struct InterruptCapabilityState, \ - sched, \ + scheduler, \ InterruptKey, \ name, \ number, \ @@ -108,7 +108,7 @@ * * Returns `nullptr` on failure. */ -__cheri_compartment("sched") const uint32_t *interrupt_futex_get( +__cheri_compartment("scheduler") const uint32_t *interrupt_futex_get( struct SObjStruct *); /** @@ -120,4 +120,4 @@ * Returns 0 on success or `-EPERM` if the argument does not authorise this * operation. */ -__cheri_compartment("sched") int interrupt_complete(struct SObjStruct *); +__cheri_compartment("scheduler") int interrupt_complete(struct SObjStruct *);
diff --git a/sdk/include/multiwaiter.h b/sdk/include/multiwaiter.h index acbb3eb..9032a72 100644 --- a/sdk/include/multiwaiter.h +++ b/sdk/include/multiwaiter.h
@@ -96,7 +96,7 @@ * Create a multiwaiter object. This is a stateful object that can wait on at * most `maxItems` event sources. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") multiwaiter_create(Timeout *timeout, struct SObjStruct *heapCapability, struct MultiWaiter **ret, @@ -105,7 +105,7 @@ /** * Destroy a multiwaiter object. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") multiwaiter_delete(struct SObjStruct *heapCapability, struct MultiWaiter *mw); /** @@ -120,7 +120,7 @@ * - If the timeout is reached without any events being triggered then this * returns -ETIMEOUT. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") multiwaiter_wait(Timeout *timeout, struct MultiWaiter *waiter, struct EventWaiterSource *events,
diff --git a/sdk/include/simulator.h b/sdk/include/simulator.h index 2d4733b..823faf2 100644 --- a/sdk/include/simulator.h +++ b/sdk/include/simulator.h
@@ -10,7 +10,7 @@ /** * Exit simulation, reporting the error code given as the argument. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") scheduler_simulation_exit(uint32_t code __if_cxx(= 0)); #endif
diff --git a/sdk/include/stdlib.h b/sdk/include/stdlib.h index 26e5180..183b0a3 100644 --- a/sdk/include/stdlib.h +++ b/sdk/include/stdlib.h
@@ -55,7 +55,7 @@ */ #define DEFINE_ALLOCATOR_CAPABILITY(name, quota) \ DEFINE_STATIC_SEALED_VALUE(struct AllocatorCapabilityState, \ - alloc, \ + allocator, \ MallocKey, \ name, \ (quota), \ @@ -175,7 +175,7 @@ * * Memory returned from this interface is guaranteed to be zeroed. */ -void *__cheri_compartment("alloc") +void *__cheri_compartment("allocator") heap_allocate(Timeout *timeout, struct SObjStruct *heapCapability, size_t size, @@ -197,7 +197,7 @@ * * Memory returned from this interface is guaranteed to be zeroed. */ -void *__cheri_compartment("alloc") +void *__cheri_compartment("allocator") heap_allocate_array(Timeout *timeout, struct SObjStruct *heapCapability, size_t nmemb, @@ -215,7 +215,7 @@ * `pointer` is not valid, etc.), or `-ENOTENOUGHSTACK` if the stack is * insufficiently large to run the function. */ -ssize_t __cheri_compartment("alloc") +ssize_t __cheri_compartment("allocator") heap_claim(struct SObjStruct *heapCapability, void *pointer); /** @@ -247,7 +247,7 @@ * of a live heap allocation, or `-ENOTENOUGHSTACK` if the stack size is * insufficiently large to safely run the function. */ -int __cheri_compartment("alloc") +int __cheri_compartment("allocator") heap_free(struct SObjStruct *heapCapability, void *ptr); /** @@ -257,14 +257,14 @@ * capability, or `-ENOTENOUGHSTACK` if the stack size is insufficiently large * to safely run the function. */ -ssize_t __cheri_compartment("alloc") +ssize_t __cheri_compartment("allocator") heap_free_all(struct SObjStruct *heapCapability); /** * Returns 0 if the allocation can be freed with the given capability, a * negated errno value otherwise. */ -int __cheri_compartment("alloc") +int __cheri_compartment("allocator") heap_can_free(struct SObjStruct *heapCapability, void *ptr); /** @@ -272,7 +272,7 @@ * `heapCapability` is not valid or if the stack is insufficient to run the * function. */ -ssize_t __cheri_compartment("alloc") +ssize_t __cheri_compartment("allocator") heap_quota_remaining(struct SObjStruct *heapCapability); /** @@ -286,7 +286,7 @@ * (-ENOTENOUGHSTACK, -ENOTENOUGHTRUSTEDSTACK) if it cannot be invoked, or * possibly -ECOMPARTMENTFAIL if the allocator compartment is damaged. */ -int __cheri_compartment("alloc") heap_quarantine_empty(void); +int __cheri_compartment("allocator") heap_quarantine_empty(void); /** * Returns true if `object` points to a valid heap address, false otherwise. @@ -318,7 +318,7 @@ * * Returns zero on success, non-zero on error (e.g. compartment call failure). */ -int __cheri_compartment("alloc") heap_render(); +int __cheri_compartment("allocator") heap_render(); static inline void __dead2 abort() { @@ -354,7 +354,7 @@ } #endif -size_t __cheri_compartment("alloc") heap_available(void); +size_t __cheri_compartment("allocator") heap_available(void); static inline void yield(void) {
diff --git a/sdk/include/thread.h b/sdk/include/thread.h index 1a33e45..dbc10f2 100644 --- a/sdk/include/thread.h +++ b/sdk/include/thread.h
@@ -20,8 +20,8 @@ /// hi 32 bits uint32_t hi; } SystickReturn; -[[cheri::interrupt_state(disabled)]] SystickReturn __cheri_compartment("sched") - thread_systemtick_get(void); +[[cheri::interrupt_state(disabled)]] SystickReturn + __cheri_compartment("scheduler") thread_systemtick_get(void); enum ThreadSleepFlags : uint32_t { @@ -60,7 +60,7 @@ * If you are using `thread_sleep` to elapse real time, pass * `ThreadSleepNoEarlyWake` as the flags argument to prevent early wakeups. */ -[[cheri::interrupt_state(disabled)]] int __cheri_compartment("sched") +[[cheri::interrupt_state(disabled)]] int __cheri_compartment("scheduler") thread_sleep(struct Timeout *timeout, uint32_t flags __if_cxx(= 0)); /** @@ -78,7 +78,7 @@ * This API is available only if the scheduler is built with accounting support * enabled. */ -__cheri_compartment("sched") uint64_t thread_elapsed_cycles_idle(void); +__cheri_compartment("scheduler") uint64_t thread_elapsed_cycles_idle(void); /** * Returns the number of cycles accounted to the current thread. @@ -86,7 +86,7 @@ * This API is available only if the scheduler is built with accounting * support enabled. */ -__cheri_compartment("sched") uint64_t thread_elapsed_cycles_current(void); +__cheri_compartment("scheduler") uint64_t thread_elapsed_cycles_current(void); /** * Returns the number of threads, including threads that have exited. @@ -97,7 +97,7 @@ * * The result of this is safe to cache: it will never change over time. */ -__cheri_compartment("sched") uint16_t thread_count(); +__cheri_compartment("scheduler") uint16_t thread_count(); /** * Wait for the specified number of microseconds. This is a busy-wait loop,
diff --git a/sdk/include/token.h b/sdk/include/token.h index b8247a0..1bb7ec6 100644 --- a/sdk/include/token.h +++ b/sdk/include/token.h
@@ -36,7 +36,7 @@ * If the sealing keys have been exhausted then this will return * `INVALID_SKEY`. This API is guaranteed never to block. */ -SKey __cheri_compartment("alloc") token_key_new(void); +SKey __cheri_compartment("allocator") token_key_new(void); /** * Allocate a new object with size `sz`. @@ -52,7 +52,7 @@ * * On error, this returns `INVALID_SOBJ`. */ -SObj __cheri_compartment("alloc") +SObj __cheri_compartment("allocator") token_sealed_unsealed_alloc(Timeout *timeout, struct SObjStruct *heapCapability, SKey key, @@ -65,7 +65,7 @@ * * The key must have the permit-seal permission. */ -SObj __cheri_compartment("alloc") +SObj __cheri_compartment("allocator") token_sealed_alloc(Timeout *timeout, struct SObjStruct *heapCapability, SKey, @@ -124,7 +124,7 @@ * @return 0 if no errors. -EINVAL if key or obj not valid, or they don't * match, or double destroy. */ -int __cheri_compartment("alloc") +int __cheri_compartment("allocator") token_obj_destroy(struct SObjStruct *heapCapability, SKey, SObj); /** @@ -134,7 +134,7 @@ * Returns 0 on success, `-EINVAL` if the key or object is not valid, or one of * the errors from `heap_can_free` if the free would fail for other reasons. */ -int __cheri_compartment("alloc") +int __cheri_compartment("allocator") token_obj_can_destroy(SObj heapCapability, SKey key, SObj object); __END_DECLS
diff --git a/sdk/xmake.lua b/sdk/xmake.lua index 78ded87..0d02151 100644 --- a/sdk/xmake.lua +++ b/sdk/xmake.lua
@@ -232,7 +232,7 @@ add_deps("locks") add_deps("compartment_helpers") on_load(function (target) - target:set("cheriot.compartment", "alloc") + target:set("cheriot.compartment", "allocator") target:set('cheriot.debug-name', "allocator") target:add('defines', "HEAP_RENDER=" .. tostring(get_config("allocator-rendering"))) end) @@ -841,7 +841,7 @@ add_deps("locks", "crt", "atomic1") add_deps("compartment_helpers") on_load(function (target) - target:set("cheriot.compartment", "sched") + target:set("cheriot.compartment", "scheduler") target:set('cheriot.debug-name', "scheduler") target:add('defines', "SCHEDULER_ACCOUNTING=" .. tostring(get_config("scheduler-accounting"))) end)