|
|
TODOs :
|
|
|
+ **Need trampolines for function pointers in asynchronous communication**:
|
|
|
Generate trampolines on the non-isolated domain, when function pointers are passed to the non-isolated domain from the isolated domain (for example from a driver's domain to the kernel's domain).
|
|
|
|
|
|
+ **An uncovered case for handling function pointers**: If a function pointer (such as a utility function) may be passed to the driver, for the driver to call, in which case we cannot decide where to generate the definitions only based on whether the rpc is a function pointer. (See functions generate_server_source and generate_client_source in server.cpp and client.cpp, respectively). Currently we assume all function pointers are called from the kernel domain, and normal function calls are made from the isolated domain.
|
|
|
|
|
|
+ **Fix register numbering in message passing marco names.**
|
|
|
|
|
|
+ **Fix implicit binding on real type**: This is because implicit binding with real_type won't always work.
|
|
|
In case of network dd, we have `sk_buff` structures in both tx/rx path. For tx's `consume_skb`, we need to bind `ndo_xmit`'s skb, whereas for rx path, the binding would be a different `sk_buff` struct. The solution would require tracking of the usage paths of structures.
|
|
|
|
|
|
+ **Generate single set of glue code files for multiple modules:** The current implementation generates code on a per module basis. An approach to do the same for multiple modules may be to merge the asts of those modules into a single ast, and then processing that ast. Would need to consider scope resolution of conflicting names across modules.
|
|
|
|
|
|
+ **Fix third argument of `container_of` function:** For example see `setup` function in `kernel_nullnet_callee.c` generated code for nullnet's idl. |
|
|
\ No newline at end of file |