⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traps.cc

📁 ml-rsim 多处理器模拟器 支持类bsd操作系统
💻 CC
📖 第 1 页 / 共 5 页
字号:
      //---------------------------------------------------------------------    case SIM_TRAP_FSTAT64:               // fstat system call      Fstat64Handler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_DFSTAT64:              // stat system call      DFStat64Handler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_LSTAT64:               // lstat system call      Lstat64Handler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_CHMOD:                 // chmod system call       ChmodHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_FCHMOD:                // fchmod system call      FchmodHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_CHOWN:                 // chown system call       ChownHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_FCHOWN:                // fchown system call      FchownHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_LCHOWN:                // lchown system call       LchownHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_RENAME:                // rename system call       RenameHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_UTIME:                 // utime system call       UtimeHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_DMKDIR:                // mkdir system call      DMkdirHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_DRMDIR:                // rmdir system call      DRmdirHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_GETDENTS64:            // getdents system call      Getdents64Handler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_LINK:                  // link system call      LinkHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_SYMLINK:               // symlink system call      SymlinkHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_FSTATVFS64:            // fstatvfs system call      Fstatvfs64Handler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_GETUID:                // getuid system call      GetUIDHandler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_GETGID:                // getgid system call      GetGIDHandler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_GETGROUPS:             // getgroups system call      GetgroupsHandler(inst, proc);      break;             //---------------------------------------------------------------------    case SIM_TRAP_GETSTDIO:              // getstdio system call      GetStdioHandler(inst, proc);      break;                   //=====================================================================    case SIM_TRAP_SOCKET:      SocketHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_BIND:      BindHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_LISTEN:      ListenHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_ACCEPT:      AcceptHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_CONNECT:      ConnectHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_GETSOCKOPT:      GetSockOptHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_SETSOCKOPT:      SetSockOptHandler(inst, proc);      break;            //---------------------------------------------------------------------    case SIM_TRAP_SHUTDOWN:      ShutdownHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_CLOSESOCKET:      CloseSocketHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_GETSOCKNAME:      GetSockNameHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_GETPEERNAME:      GetPeerNameHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_SENDMSG:      SendMsgHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_RECVMSG:      RecvMsgHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_GETHOSTBYNAME:      GetHostByNameHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_GETHOSTBYADDR:      GetHostByAddrHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_SYSINFO:      SysInfoHandler(inst, proc);      break;      //---------------------------------------------------------------------    case SIM_TRAP_PATHCONF:      PathConfHandler(inst, proc);      break;      //---------------------------------------------------------------------    default:      return(0);    }   return(1);}   /***************************************************************************/ static void UserStatAllocHandler(instance *inst, ProcState *proc){#ifdef COREFILE  if (YS__Simtime > DEBUG_TIME)    fprintf(corefile, "traps.cc: In UserStatAlloc Handler\n");#endif  int   pr;  char  buffer[MAX_USERSTAT_NAME];  int   type;  int   return_value;  int   lreturn_register;  int   return_register;  char *pa;  lreturn_register = arch_to_log(proc, proc->cwp, 8);  return_register = proc->intmapper[lreturn_register];   pr = proc->intmapper[arch_to_log(proc, proc->cwp, 8)];  type = proc->phy_int_reg_file[pr];   pr = proc->intmapper[arch_to_log(proc, proc->cwp, 9)];  inst->addr = proc->phy_int_reg_file[pr];  memset(buffer, 0, sizeof(buffer));  for (int i = 0; i < sizeof(buffer)-1; i++)    {      pa = (char *)GetMap(inst, proc);      buffer[i] = *pa;      if (buffer[i] == 0)	break;      inst->addr++;    }    return_value = UserStats[proc->proc_id / ARCH_cpus]->alloc(type, buffer);  proc->phy_int_reg_file[return_register] =    proc->log_int_reg_file[lreturn_register] = return_value;    }/***************************************************************************/static void UserStatSampleHandler(instance *inst, ProcState *proc){#ifdef COREFILE  if (YS__Simtime > DEBUG_TIME)    fprintf(corefile, "traps.cc: In UserStatSample Handler\n");#endif  int   pr;  int   id;  int   val;   pr  = proc->intmapper[arch_to_log(proc, proc->cwp, 8)];  id  = proc->phy_int_reg_file[pr];   pr  = proc->intmapper[arch_to_log(proc, proc->cwp, 9)];  val = proc->phy_int_reg_file[pr];   UserStats[proc->proc_id / ARCH_cpus]->sample(id, val);}/***************************************************************************//* WritelogHandler : Simulator exception for writing log file              *//***************************************************************************/static void WritelogHandler(instance *inst, ProcState *proc){#ifdef COREFILE  if (YS__Simtime > DEBUG_TIME)    fprintf(corefile,"traps.cc: In Writelog Handler\n");#endif  int   number_of_items;  char *buffer;  int   pr, fd;  int   count = 0;  int   lreturn_register;  int   return_register;  int   retval, done;  fd = logfile[proc->proc_id / ARCH_cpus];    lreturn_register = arch_to_log(proc, proc->cwp, 8);  return_register = proc->intmapper[lreturn_register];   pr = proc->intmapper[arch_to_log(proc, proc->cwp, 8)];  inst->addr = proc->phy_int_reg_file[pr];  pr = proc->intmapper[arch_to_log(proc, proc->cwp, 9)];  number_of_items = proc->phy_int_reg_file[pr];   int st = inst->addr & (PAGE_SIZE - 1);  done = 0;  if (number_of_items > PAGE_SIZE - st)    {      buffer = GetMap(inst, proc);      while ((retval = write(fd, buffer, PAGE_SIZE-st)) < 0)	{	  printf("Write to file failed (%s)",		 YS__strerror(errno));	  printf("  Retry in %i secs ...\n",		 FILEOP_RETRY_PERIOD);	  fflush(stdout);	  sleep(FILEOP_RETRY_PERIOD);	}      count += retval;      inst->addr += retval;      number_of_items -= retval;       if (retval != PAGE_SIZE-st)        done = 1;      while (number_of_items >= PAGE_SIZE)        {          buffer = GetMap(inst, proc);	  while ((retval = write(fd, buffer, PAGE_SIZE)) < 0)	    {	      printf("Write to file failed (%s)",		     YS__strerror(errno));	      printf("  Retry in %i secs ...\n",		     FILEOP_RETRY_PERIOD);	      fflush(stdout);	      sleep(FILEOP_RETRY_PERIOD);	    }	            if (retval < 0)             /* some sort of error other than EOF */            count = retval;          else            {              count += retval;              number_of_items -= retval;              inst->addr += retval;            }                    if (retval != PAGE_SIZE)            {              done = 1;              break;            }        }    }  buffer = GetMap(inst, proc);  if (!done)    {      while ((retval = write(fd, buffer, number_of_items)) < 0)	{	  printf("Write to file failed (%s)",		 YS__strerror(errno));	  printf("  Retry in %i secs ...\n",		 FILEOP_RETRY_PERIOD);	  fflush(stdout);	  sleep(FILEOP_RETRY_PERIOD);	}      if (retval < 0)                 /* some sort of error other than EOF */        count = retval;      else        count += retval;    }   if (count < 0)    count = -1 * errno;  fflush(NULL);  proc->phy_int_reg_file[return_register] =    proc->log_int_reg_file[lreturn_register] = count;}   /***************************************************************************/static void DCreatHandler(instance *inst, ProcState *proc){#ifdef COREFILE  if (YS__Simtime > DEBUG_TIME)    fprintf(corefile,"traps.cc: In Creat Handler\n");#endif   int  pr;  char buffer[PATH_MAX];   int  mode, fd;  int  return_value;  int  return_register;  int  lreturn_register;  char *pa;  lreturn_register = arch_to_log(proc, proc->cwp, 8);  return_register = proc->intmapper[lreturn_register];   pr = proc->intmapper[arch_to_log(proc, proc->cwp, 8)];  fd = proc->phy_int_reg_file[pr];   pr = proc->intmapper[arch_to_log(proc, proc->cwp, 9)];  inst->addr = proc->phy_int_reg_file[pr];  memset(buffer, 0, sizeof(buffer));  for (int i = 0; i < PATH_MAX-1; i++)    {      pa = (char *)GetMap(inst, proc);      buffer[i] = *pa;      if (*pa == '\0')        break;      inst->addr++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -