X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=test%2Fgeekos_test_vm%2Fsrc%2Fgeekos%2Fbget.c;h=d13c3e08aa5d415b0e166ec10561088cedd58129;hb=cd89b672b4f7e1b64c86ff0234a9935946533590;hp=cccbe163ccd87e77b979130716120c329d046cc8;hpb=79693563ef70e662c9145bdd5cd0c733a7ba7dcc;p=palacios.git diff --git a/test/geekos_test_vm/src/geekos/bget.c b/test/geekos_test_vm/src/geekos/bget.c index cccbe16..d13c3e0 100644 --- a/test/geekos_test_vm/src/geekos/bget.c +++ b/test/geekos_test_vm/src/geekos/bget.c @@ -525,10 +525,9 @@ struct bfhead { }; #define BFH(p) ((struct bfhead *) (p)) -static struct bfhead freelist = { /* List of free buffers */ - {0, 0}, - {&freelist, &freelist} -}; +static struct bfhead freelist; /* List of free buffers */ + + #ifdef BufStats @@ -1017,6 +1016,14 @@ void bpool(buf, len) assert(len - sizeof(struct bhead) <= -((bufsize) ESent + 1)); + /* Initialize Free list since compile time static initializations appear to be broken */ + freelist.bh.prevfree = 0; + freelist.bh.bsize = 0; + freelist.ql.flink = &freelist; + freelist.ql.blink = &freelist; + + + /* Clear the backpointer at the start of the block to indicate that there is no free block prior to this one. That blocks recombination when the first block in memory is released. */