+/*
+ * Copyright (C) 1994, Index Data I/S
+ * All rights reserved.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: drdwr.c,v $
+ * Revision 1.6 1994-09-06 13:05:14 adam
+ * Further development of insertion. Some special cases are
+ * not properly handled yet! assert(0) are put here. The
+ * binary search in each page definitely reduce usr CPU.
+ *
+ * Revision 1.5 1994/09/01 17:49:38 adam
+ * Removed stupid line. Work on insertion in dictionary. Not finished yet.
+ *
+ */
+
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
if (p->lru_next)
p->lru_next->lru_prev = p->lru_prev;
else
- bf->lru_back = p->lru_prev;
+ bf->lru_front = p->lru_prev;
/* remove from hash chain */
*p->h_prev = p->h_next;
{
p = bf->lru_back;
if (p->dirty)
- bf_write (bf->bf, p->no, p->data);
+ {
+ bf_write (bf->bf, p->no, 0, 0, p->data);
+ }
release_block (bf, p);
}
}
bf->lru_front = p;
}
-int bf_readp (Dict_BFile bf, int no, void **bufp)
+int dict_bf_readp (Dict_BFile bf, int no, void **bufp)
{
struct Dict_file_block *p;
int i;
+ assert (no < 1000);
if ((p = find_block (bf, no)))
{
*bufp = p->data;
}
bf->misses++;
p = alloc_block (bf, no);
- i = bf_read (bf->bf, no, p->data);
+ i = bf_read (bf->bf, no, 0, 0, p->data);
if (i > 0)
{
*bufp = p->data;
return i;
}
-int bf_newp (Dict_BFile bf, int no, void **bufp)
+int dict_bf_newp (Dict_BFile dbf, int no, void **bufp)
{
struct Dict_file_block *p;
- if (!(p = find_block (bf, no)))
- p = alloc_block (bf, no);
+ if (!(p = find_block (dbf, no)))
+ p = alloc_block (dbf, no);
else
- move_to_front (bf, p);
+ move_to_front (dbf, p);
*bufp = p->data;
- memset (p->data, 0, bf->bf->block_size);
+ memset (p->data, 0, dbf->block_size);
p->dirty = 1;
#if 0
printf ("bf_newp of %d:", no);
- pr_lru (bf);
+ pr_lru (dbf);
#endif
return 1;
}
-int bf_touch (Dict_BFile bf, int no)
+int dict_bf_touch (Dict_BFile dbf, int no)
{
struct Dict_file_block *p;
- if ((p = find_block (bf, no)))
+ if ((p = find_block (dbf, no)))
{
p->dirty = 1;
return 0;