public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Discussing how SystemTable and its Pointers should be treated in Rust
@ 2022-06-21  6:04 Ayush Singh
  2022-06-21  7:28 ` [edk2-devel] " Michael Brown
  0 siblings, 1 reply; 2+ messages in thread
From: Ayush Singh @ 2022-06-21  6:04 UTC (permalink / raw)
  To: edk2-devel-groups-io, Michael Kubacki, michael.d.kinney,
	jabeena.b.gaibusab, Jiewen Yao

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-21  7:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-21  6:04 Discussing how SystemTable and its Pointers should be treated in Rust Ayush Singh
2022-06-21  7:28 ` [edk2-devel] " Michael Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox