📄 vm_fifo.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "vm_global.h"
int main()
{
FILE *fp;
int write_num,i=0,n=0;
char c;
printf("How many requests do you want? ");
scanf("%d",&n);
srand(time(NULL));
MemoryAccessRequestPtr mem_request0;
mem_request0=(MemoryAccessRequestPtr)malloc(sizeof(MemoryAccessRequest));
//mkfifo(FIFO,S_IFIFO|0666,0);
while(i<n)
{
if((fp=fopen(FIFO,"a+"))==NULL)
{
//handle_error(FILE_OPEN_FAILED);
exit(1);
}
do_request(mem_request0);
printf("Success request : %d\n",++i);
write_num=fwrite(mem_request0,sizeof(MemoryAccessRequest),1,fp);
}
fclose(fp);
return 0;
}
void do_request(MemoryAccessRequestPtr mem_request)
{
mem_request->virtual_address=rand()%VIRTUAL_MEMORY_SIZE;
switch (rand()%3)
{
case 0: /*读请求*/
mem_request->request_type=READ;
printf("Produce request:\nAddress:%u\tType:read\n",mem_request->virtual_address);
break;
case 1: /*写请求*/
mem_request->request_type=WRITE;
mem_request->value=rand()%MAX_VALUE;
printf("Produce request:\nAddress:%u\tType:write\tvalue:%02X\n",mem_request->virtual_address,mem_request->value);
break;
case 2: /*执行请求*/
mem_request->request_type=EXECUTE;
printf("Produce request:\nAddress:%u\tType:execute\n",mem_request->virtual_address);
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -