The Epicardium API allowsd user code running on core 1 (running the pycardium) to access functionality running on the epicardium (core 0).
The Epicardium API allows user code running on core 1 (running the pycardium) to access functionality running on the epicardium (core 0).
In other words: It allows you to call C code running on the Epicardium from a Python module.
...
...
@@ -21,12 +19,9 @@ The API calls are declared in `epicardium/epicardium.h` and documented with sphi
## API implementation
The API calls are implemented in `epicardium/modules/*.c` and `pycardium/modules/*.c`.
## Build System Integration
The API calls are implemented in `epicardium/modules/*.c`.
The calls need to be added to `epicardium/modules/meson.build` and assigned unique API IDs.
The `*.c`-files need to be added to `epicardium/modules/meson.build` and assigned unique API IDs.
## Best Practices
...
...
@@ -35,7 +30,7 @@ The calls need to be added to `epicardium/modules/meson.build` and assigned uniq
- Passing pointers into the address space of (py)cardium is fine. Do not pass pointers into the address space of epicardium to (py)cardium.
- The API functions follow the kernel convention of either returning a boolean if the function is a predicate or returning a success integer (with negative values denoting errors) if it is an action or imperative command. (See also https://www.kernel.org/doc/html/v4.10/process/coding-style.html#function-return-values-and-names.)
- Pay attention while implementing an API call that it might be called from within different FreeRTOS tasks. (Calls made from (py)cardium are executed by the dispatcher task on the epicardium.) Don't make assumptions which task you're in. Especially if using a task semaphore.
- Please format you code using the `tools/code-style.sh`.
- Please format your code using the `tools/code-style.sh`.