예제 #1
0
파일: cache.c 프로젝트: taysom/tau
void bdepends_on (void *parent, void *child)
{
	buf_s	*pbuf;
	buf_s	*cbuf;

	pbuf = addr2buf(parent);
	cbuf = addr2buf(child);

	queen_ant( &pbuf->b_ant, &cbuf->b_ant);
}
예제 #2
0
파일: cache.c 프로젝트: taysom/tau
void bclear_dependency (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);
	clear_queen( &buf->b_ant);
}
예제 #3
0
파일: cache.c 프로젝트: taysom/tau
void *bcontext (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);
	return buf->b_tree;
}
예제 #4
0
파일: cache.c 프로젝트: taysom/tau
u64 bblkno (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);
	return buf->b_blkno;
}
예제 #5
0
파일: cache.c 프로젝트: taysom/tau
ant_s *bant (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);

	return &buf->b_ant;
}
예제 #6
0
파일: cache.c 프로젝트: taysom/tau
void bdirty (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);
	aver(buf->b_ant.a_state != ANT_FLUSHING);
	buf->b_ant.a_state = ANT_DIRTY;
}
예제 #7
0
파일: cache.c 프로젝트: taysom/tau
void bchange_blkno (void *data, u64 blkno)
{
	buf_s	*buf;

	buf = addr2buf(data);
printf("change %llx -> %llx\n", buf->b_blkno, blkno);
	rmv(buf);
	buf->b_blkno = blkno;
	add(buf);
}
예제 #8
0
파일: cache.c 프로젝트: taysom/tau
void bput (void *data)
{
	buf_s	*buf;

	buf = addr2buf(data);
	aver(buf->b_use > 0);
	if (!Lazy) {
		bflush(buf);
	}
	aver(buf->b_use > 0);
	--buf->b_use;
}
예제 #9
0
파일: mtd25.cpp 프로젝트: char32/24aa
size_t Mtd25::bus_read(uint8_t *rxbuf, size_t len, uint32_t offset) {
  msg_t status;

  osalDbgAssert((offset + len) <= capacity(), "Transaction out of device bounds");
  osalDbgCheck(this->writebuf_size >= cfg.addr_len + 1);

  this->acquire();

  /* fill preamble */
  if (4 == cfg.addr_len)
    writebuf[0] = S25_CMD_4READ;
  else
    writebuf[0] = S25_CMD_READ;
  addr2buf(&writebuf[1], offset, cfg.addr_len);

  status = spi_read(rxbuf, len, writebuf, 1+cfg.addr_len);

  this->release();

  if (MSG_OK == status)
    return len;
  else
    return 0;
}