Hello everyone, I wanted to discuss and get ideas about how I should implement the various services (like allocator and stdin) for UEFI in Rust. I have come up with two approaches:
1. Initialize the pointers needed for a module to work early on and keep them local to the module. This will mean that the allocator module will store the `allocate_pool` and `free_pool` pointers in a static private to the module which will be initialized by the std before the Rust main is run. 2. Only have one global pointer to the SystemTable and pass that to the functions (like allocate and deallocate) when needed. I am leaning more towards the first approach right now since it would mean that we will only need to assert that the local pointer is valid. However, the 1st approach is a NOGO if it is possible that the pointers in SysteTable can be changed by UEFI. By change, I mean that for example the `allocate_pool` pointer in SystemTable is replaced with a different pointer midway through the program. In that case, the pointer in the allocator module will become invalid but the SystemTable will contain the pointer to the new location of `allocate_pool` and stay valid. Yours Sincerely, Ayush Singh -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#90650): https://edk2.groups.io/g/devel/message/90650 Mute This Topic: https://groups.io/mt/91894552/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
