File tree Expand file tree Collapse file tree 4 files changed +68
-15
lines changed
Expand file tree Collapse file tree 4 files changed +68
-15
lines changed Original file line number Diff line number Diff line change 11[package ]
22name = " neotron-common-bios"
3- version = " 0.1.0 "
3+ version = " 0.4.0-alpha "
44authors = [
" Jonathan 'theJPster' Pallant <[email protected] >" ]
55edition = " 2018"
66description = " Common BIOS code and API for all Neotron systems."
Original file line number Diff line number Diff line change @@ -36,3 +36,13 @@ This BIOS API crate is a work in progress.
3636Unless you explicitly state otherwise, any contribution intentionally submitted
3737for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
3838dual licensed as above, without any additional terms or conditions.
39+
40+ ## Changelog
41+
42+ ### Unreleased Changes
43+
44+ * Changed ` memory_get_region ` to return a ` MemoryRegion `
45+
46+ ### v0.3.0
47+
48+ * First published version. ` Cargo.toml ` reports at ` 0.1.0 ` .
Original file line number Diff line number Diff line change @@ -163,20 +163,12 @@ pub struct Api {
163163 /// Other regions may be located at other addresses (e.g. external DRAM or
164164 /// PSRAM).
165165 ///
166- /// The OS will always load non-relocatable applications into the bottom
167- /// of Region 0. It can allocate OS specific structures from any other
168- /// Region (if any), or from the top of Region 0 (although this reduces
169- /// the maximum application space available). The OS will prefer lower
170- /// numbered regions (other than Region 0), so faster memory should be
171- /// listed first.
172- ///
173- /// If the region number given is invalid, the function returns `(null,
174- /// 0)`.
175- pub memory_get_region : extern "C" fn (
176- region : u8 ,
177- out_start : * mut * mut u8 ,
178- out_len : * mut usize ,
179- ) -> crate :: Result < ( ) > ,
166+ /// The OS will always load non-relocatable applications into the bottom of
167+ /// Region 0. It can allocate OS specific structures from any other Region
168+ /// (if any), or from the top of Region 0 (although this reduces the maximum
169+ /// application space available). The OS will prefer lower numbered regions
170+ /// (other than Region 0), so faster memory should be listed first.
171+ pub memory_get_region : extern "C" fn ( region_index : u8 ) -> crate :: Result < types:: MemoryRegion > ,
180172}
181173
182174// End of file
Original file line number Diff line number Diff line change @@ -126,6 +126,28 @@ pub struct Time {
126126 pub nsecs : u32 ,
127127}
128128
129+ /// The kinds of memory we know about
130+ #[ repr( C ) ]
131+ #[ derive( Debug , Clone ) ]
132+ pub enum MemoryKind {
133+ /// Read-write memory
134+ Ram ,
135+ /// Read-only memory
136+ Rom ,
137+ }
138+
139+ /// Represents a region in memory.
140+ #[ repr( C ) ]
141+ #[ derive( Debug , Clone ) ]
142+ pub struct MemoryRegion {
143+ /// The address the region starts at
144+ pub start : * mut u8 ,
145+ /// The length of the region
146+ pub length : usize ,
147+ /// The kind of memory found at this region
148+ pub kind : MemoryKind ,
149+ }
150+
129151// ============================================================================
130152// Impls
131153// ============================================================================
@@ -302,6 +324,35 @@ impl From<&Time> for chrono::DateTime<chrono::Utc> {
302324 }
303325}
304326
327+ // MemoryKind
328+
329+ impl core:: fmt:: Display for MemoryKind {
330+ fn fmt ( & self , f : & mut core:: fmt:: Formatter ) -> core:: fmt:: Result {
331+ write ! (
332+ f,
333+ "{}" ,
334+ match self {
335+ MemoryKind :: Rom => "ROM" ,
336+ MemoryKind :: Ram => "RAM" ,
337+ }
338+ )
339+ }
340+ }
341+
342+ // MemoryRegion
343+
344+ impl core:: fmt:: Display for MemoryRegion {
345+ fn fmt ( & self , f : & mut core:: fmt:: Formatter ) -> core:: fmt:: Result {
346+ write ! (
347+ f,
348+ "{} KiB {} @ {:p}" ,
349+ self . length / 1024 ,
350+ self . kind,
351+ self . start
352+ )
353+ }
354+ }
355+
305356// ============================================================================
306357// End of File
307358// ============================================================================
You can’t perform that action at this time.
0 commit comments