Make "struct buffer"s reusable between sessions.
authorMichael Brown <mcb30@etherboot.org>
Mon, 9 May 2005 18:03:44 +0000 (18:03 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 9 May 2005 18:03:44 +0000 (18:03 +0000)
src/core/buffer.c
src/include/buffer.h

index 47eb7b7..48588b6 100644 (file)
  * 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 );
 }
index b0de39d..a22b00d 100644 (file)
@@ -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 );