当前位置: 首页>>代码示例>>C++>>正文


C++ Disk::ToOffset方法代码示例

本文整理汇总了C++中Disk::ToOffset方法的典型用法代码示例。如果您正苦于以下问题:C++ Disk::ToOffset方法的具体用法?C++ Disk::ToOffset怎么用?C++ Disk::ToOffset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Disk的用法示例。


在下文中一共展示了Disk::ToOffset方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sizeof

void
dump_double_indirect_stream(Disk& disk, bfs_inode* node, bool showOffsets)
{
	if (node->data.max_double_indirect_range == 0)
		return;

	int32 bytes = node->data.double_indirect.length * disk.BlockSize();
	int32 count = bytes / sizeof(block_run);
	block_run runs[count];

	off_t offset = node->data.max_indirect_range;

	ssize_t bytesRead = disk.ReadAt(disk.ToOffset(node->data.double_indirect),
		(uint8*)runs, bytes);
	if (bytesRead < bytes) {
		fprintf(stderr, "couldn't read double indirect runs: %s\n",
			strerror(bytesRead));
		return;
	}

	puts("double indirect stream:");

	for (int32 i = 0; i < count; i++) {
		if (runs[i].IsZero())
			return;

		printf("  double_indirect[%02" B_PRId32 "]       = ", i);

		dump_block_run("", runs[i], "");

		int32 indirectBytes = runs[i].length * disk.BlockSize();
		int32 indirectCount = indirectBytes / sizeof(block_run);
		block_run indirectRuns[indirectCount];

		bytesRead = disk.ReadAt(disk.ToOffset(runs[i]), (uint8*)indirectRuns,
			indirectBytes);
		if (bytesRead < indirectBytes) {
			fprintf(stderr, "couldn't read double indirect runs: %s\n",
				strerror(bytesRead));
			continue;
		}

		for (int32 j = 0; j < indirectCount; j++) {
			if (indirectRuns[j].IsZero())
				break;

			printf("                     [%04" B_PRId32 "] = ", j);

			char buffer[256];
			if (showOffsets)
				snprintf(buffer, sizeof(buffer), " %16" B_PRIdOFF, offset);
			else
				buffer[0] = '\0';

			dump_block_run("", indirectRuns[j], buffer);

			offset += indirectRuns[j].length * disk.BlockSize();
		}
	}
}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:60,代码来源:bfsinfo.cpp


注:本文中的Disk::ToOffset方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。