#include "ao_sdcard.h"
#include "ao_bufio.h"
-#define AO_NUM_BUF 4
+#define AO_NUM_BUF 16
#define AO_BUFSIZ 512
struct ao_bufio {
bufio->block = 0xffffffff;
bufio = NULL;
}
- }
+ } else
+ ao_panic(AO_PANIC_BUFIO);
}
if (bufio) {
bufio->busy++;
+ if (!bufio->busy)
+ ao_panic(AO_PANIC_BUFIO);
buf = ao_bufio_to_buf(bufio);
}
ao_bufio_unlock();
ao_bufio_lock();
bufio = ao_buf_to_bufio(buf);
+ if (!bufio->busy)
+ ao_panic(AO_PANIC_BUFIO);
+
DBG ("idle buffer %d write %d\n", ao_bufio_to_num(bufio), write);
bufio->dirty |= write;
if (!--bufio->busy) {
};
void
-ao_bufio_init(void)
+ao_bufio_setup(void)
{
int b;
- for (b = 0; b < AO_NUM_BUF; b++)
+ for (b = 0; b < AO_NUM_BUF; b++) {
+ ao_bufio[b].dirty = 0;
+ ao_bufio[b].busy = 0;
ao_bufio[b].block = 0xffffffff;
- ao_sdcard_init();
+ }
+}
+void
+ao_bufio_init(void)
+{
+ ao_bufio_setup();
+ ao_sdcard_init();
ao_cmd_register(&ao_bufio_cmds[0]);
}