This is the Big Question that we talked about a lot in class; I just want a centralized place for this discussion. Some initial thoughts:
- We probably want our own linked list, if we're using linked lists. Probably regardless we need our own implementation, both for
no_std purposes and to allow the hack of writing pointers into unallocated pages.
- If we want to avoid dynamic dispatch, we need to avoid having a big collection of different kinds of
DataSources. I'm not sure that's possible in a monolithic kernel, unless we want applications to deal with multiple AddressSpaces, one for each DataSource they rely on. That seems painful.
VecDeque (which is a circular buffer, i.e. the kind of datastructure used in log-structured file systems) might be better than LinkedList. Certainly it's a more rust-y data structure, and I think the standard library's implementation is generally considered to be much more efficient. There are possibly other data structures we could find in the ecosystem or roll ourselves that would be even more suited to the task.
This is the Big Question that we talked about a lot in class; I just want a centralized place for this discussion. Some initial thoughts:
no_stdpurposes and to allow the hack of writing pointers into unallocated pages.DataSources. I'm not sure that's possible in a monolithic kernel, unless we want applications to deal with multipleAddressSpaces, one for eachDataSourcethey rely on. That seems painful.VecDeque(which is a circular buffer, i.e. the kind of datastructure used in log-structured file systems) might be better thanLinkedList. Certainly it's a more rust-y data structure, and I think the standard library's implementation is generally considered to be much more efficient. There are possibly other data structures we could find in the ecosystem or roll ourselves that would be even more suited to the task.