SSDSim源码分析-流程分析

首先分析这个源码,我们可以先从入口函数进行入手,首先我们来到ssd.c这个文件里面,来到它的main函数里面,首先我们先看这个比较重要的函数,initiation函数。

void main()
{
	unsigned  int i,j,k;
	struct ssd_info *ssd;

	#ifdef DEBUG
	printf("enter main\n"); 
	#endif
	ssd=(struct ssd_info*)malloc(sizeof(struct ssd_info));
	alloc_assert(ssd,"ssd");
	memset(ssd,0, sizeof(struct ssd_info));
	ssd=initiation(ssd);
	make_aged(ssd);
	pre_process_page(ssd);

	for (i=0;i<ssd->parameter->channel_number;i++)
	{
		for (j=0;j<ssd->parameter->die_chip;j++)
		{
			for (k=0;k<ssd->parameter->plane_die;k++)
			{
				printf("%d,0,%d,%d:%5d\n",i,j,k,ssd->channel_head[i].chip_head[0].die_head[j].plane_head[k].free_page);
			}
		}
	}
	fprintf(ssd->outputfile,"\t\t\t\t\t\t\t\t\tOUTPUT\n");
	fprintf(ssd->outputfile,"****************** TRACE INFO ******************\n");

	ssd=simulate(ssd);
	statistic_output(ssd);  
/*	free_all_node(ssd);*/

	printf("\n");
	printf("the simulation is completed!\n");

/* 	_CrtDumpMemoryLeaks(); */
}

 

首先我们进入initiation函数里面,我们可以看见,有许多输入参数的地方,然后接下来,我对这些参数进行下解释

struct ssd_info *initiation(struct ssd_info *ssd)
{
	unsigned int x=0,y=0,i=0,j=0,k=0,l=0,m=0,n=0;
	errno_t err;
	char buffer[300];
	struct parameter_value *parameters;
	FILE *fp=NULL;
	
	printf("input parameter file name:");
 //	gets(ssd->parameterfilename);
 	strcpy_s(ssd->parameterfilename,16,"page.parameters");

	printf("\ninput trace file name:");
	//gets(ssd->tracefilename);
	strcpy_s(ssd->tracefilename,25,"example.ascii");

	printf("\ninput output file name:");
	//gets(ssd->outputfilename);
	strcpy_s(ssd->outputfilename,10,"test.out");

	printf("\ninput statistic file name:");
	//gets(ssd->statisticfilename);
	strcpy_s(ssd->statisticfilename,16,"test.dat");

	/*strcpy_s(ssd->statisticfilename2 ,16,"statistic2.dat");*/

	//导入ssd的配置文件
	parameters=load_parameters(ssd->parameterfilename);
	ssd->parameter=parameters;
	ssd->min_lsn=0x7fffffff;
	ssd->page=ssd->parameter->chip_num*ssd->parameter->die_chip*ssd->parameter->plane_die*ssd->parameter->block_plane*ssd->parameter->page_block;

	//初始化 dram
	ssd->dram = (struct dram_info *)malloc(sizeof(struct dram_info));
	alloc_assert(ssd->dram,"ssd->dram");
	memset(ssd->dram,0,sizeof(struct dram_info));
	initialize_dram(ssd);

	//初始化通道
	ssd->cha
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值