@@ -31,7 +31,7 @@ pub use types::*;
3131pub use version:: Version ;
3232
3333/// BIOS API semantic version for the API defined in this crate.
34- pub const API_VERSION : Version = Version :: new ( 0 , 3 , 0 ) ;
34+ pub const API_VERSION : Version = Version :: new ( 0 , 4 , 0 ) ;
3535
3636/// The BIOS API.
3737///
@@ -147,36 +147,38 @@ pub struct Api {
147147 pub video_get_framebuffer : extern "C" fn ( ) -> * mut u8 ,
148148 /// Set the framebuffer address.
149149 ///
150- /// Tell the BIOS where it should start fetching pixel or textual data
151- /// from (depending on the current video mode).
150+ /// Tell the BIOS where it should start fetching pixel or textual data from
151+ /// (depending on the current video mode).
152152 ///
153153 /// This value is forgotten after a video mode change and must be
154154 /// re-supplied.
155- pub video_set_framebuffer : extern "C" fn ( * mut u8 ) -> crate :: Result < ( ) > ,
156- /// Find out how large a given region of memory is.
157155 ///
158- /// The first region is the 'application region' and is defined to always
159- /// start at address `0x2000_0400` (that is, 1 KiB into main SRAM) on a
160- /// standard Cortex-M system. This application region stops just before
161- /// the BIOS reserved memory, at the top of the internal SRAM.
156+ /// Once the BIOS has handed over to the OS, it will never write to video
157+ /// memory, only read.
158+ ///
159+ /// # Safety
160+ ///
161+ /// The region pointed to by `start_address` must be large enough to contain
162+ /// however much video memory is required by both the current video mode,
163+ /// and whatever video modes you subsequently change into.
164+ pub video_set_framebuffer : unsafe extern "C" fn ( start_address : * const u8 ) -> crate :: Result < ( ) > ,
165+ /// Find out about regions of memory in the system.
166+ ///
167+ /// The first region (index `0`) must be the 'application region' which is
168+ /// defined to always start at address `0x2000_0400` (that is, 1 KiB into
169+ /// main SRAM) on a standard Cortex-M system. This application region stops
170+ /// just before the BIOS reserved memory, typically at the top of the
171+ /// internal SRAM.
162172 ///
163173 /// Other regions may be located at other addresses (e.g. external DRAM or
164174 /// PSRAM).
165175 ///
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 < ( ) > ,
176+ /// The OS will always load non-relocatable applications into the bottom of
177+ /// Region 0. It can allocate OS specific structures from any other Region
178+ /// (if any), or from the top of Region 0 (although this reduces the maximum
179+ /// application space available). The OS will prefer lower numbered regions
180+ /// (other than Region 0), so faster memory should be listed first.
181+ pub memory_get_region : extern "C" fn ( region_index : u8 ) -> crate :: Result < types:: MemoryRegion > ,
180182}
181183
182184// End of file
0 commit comments