summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/buffer.c13
-rw-r--r--src/include/buffer.h6
2 files changed, 9 insertions, 10 deletions
diff --git a/src/core/buffer.c b/src/core/buffer.c
index 47eb7b7f..48588b6e 100644
--- a/src/core/buffer.c
+++ b/src/core/buffer.c
@@ -32,15 +32,12 @@
* Initialise a buffer
*
*/
-void init_buffer ( struct buffer *buffer, physaddr_t start, size_t len ) {
- buffer->start = start;
- buffer->end = start + len;
- buffer->fill = 0;
+void init_buffer ( struct buffer *buffer ) {
+ char tail = 1;
- if ( len ) {
- char tail = 1;
- copy_to_phys ( start, &tail, sizeof ( tail ) );
- }
+ buffer->fill = 0;
+ if ( buffer->end != buffer->start )
+ copy_to_phys ( buffer->start, &tail, sizeof ( tail ) );
DBG ( "BUFFER [%x,%x) initialised\n", buffer->start, buffer->end );
}
diff --git a/src/include/buffer.h b/src/include/buffer.h
index b0de39df..a22b00dd 100644
--- a/src/include/buffer.h
+++ b/src/include/buffer.h
@@ -33,10 +33,12 @@ struct buffer_free_block {
physaddr_t end;
} __attribute__ (( packed ));
+/* This must be provided by the architecture-dependent load_buffer.c */
+extern struct buffer load_buffer;
+
/* Functions in buffer.c */
-extern void init_buffer ( struct buffer *buffer, physaddr_t start,
- size_t len );
+extern void init_buffer ( struct buffer *buffer );
extern int fill_buffer ( struct buffer *buffer, void *data,
off_t offset, size_t len );