예제 #1
0
int InterpreterDBG::receiveCmd() {
  if(clientsock < 0) {
    return CMDContinue;
  }

  string cmd = receiveIncomingData();

  int ret;

  if(cmd == "step_into") {
    ret = CMDStepInto;
  } else if(cmd == "step_over") {
    ret = CMDStepOver;
  } else if(cmd == "step_out") {
    ret = CMDStepOut;
  } else if(cmd == "continue") {
    ret = CMDContinue;
  } else if(cmd.find("breakpoint") != string::npos) {
    processBreakpointCMD(cmd);
    ret = receiveCmd();
  } else {
    //cerr << PACKAGE << ": comando desconhecido: \"" << cmd << "\"" << endl;
    ret = CMDStepInto;
  }

  return ret;
}
예제 #2
0
파일: bta_gps_act.c 프로젝트: morrey/bt_bcm
void wait_4_command_thread()
{
  uint8_t *v1; // r4@3
  unsigned int v2; // r6@3
  bool v3; // cf@3
  bool v4; // zf@3
  uint8_t *v5; // r6@3
  int v6; // r2@6
  int *v7; // r3@15
  int rcvLen; // r2@19
  const char *v9; // r1@11
  int result; // r0@34
  struct pollfd fds[2]; // [sp+4h] [bp-4Ch]@12
  int v13; // [sp+Ch] [bp-44h]@12
  int v14; // [sp+10h] [bp-40h]@12
  int v15; int v11 = 16;
  struct sockaddr addr; 
  socklen_t peer_addr_size = 16;
  
   struct pollfd fds[2]={};
  struct sockaddr_un peer_addr;

  socklen_t peer_addr_size = sizeof(struct sockaddr_un);
  
  listen(hservSocket, 1);
  while ( true )
  {
LABEL_31:
    if ( bExit )
    {
LABEL_10:
      if ( btif_trace_level > iLevelMessages )
      {
        v9 = "wait_4_command_thread exit\n";
        goto LABEL_33;
      }
      goto LABEL_34;
    }
    if ( hservSocket <= 0 ) goto LABEL_34;

    if ( btif_trace_level > iLevelMessages)  LogMsg(1283, "TCP server accept ...\n");
    clientfd = accept(hservSocket, (struct sockaddr *) &peer_addr, &peer_addr_size);
    if ( btif_trace_level > iLevelMessages ) LogMsg(1283, "TCP server accept clientfd (%d)\n", clientfd);
    if ( clientfd != -1 )  break;
    if ( bExit )  goto LABEL_10;
  }
  do
  {
    fds[0].events = 73;
    fds[0].revents = 0;
    fds[0].fd = clientfd;
    
    fds[1].events = 73;
    fds[1].revents = 0;
    fds[1].fd = 0;
    
    if ( poll(fds, 2, -1) == -1 )
    {
      if ( btif_trace_level > iLevelMessages )
        LogMsg(1283, "poll failed\n");
      v7 = &clientfd;
LABEL_27:
      *v7 = -1;
      goto LABEL_31;
    }
    if ( btif_trace_level > iLevelMessages )
      LogMsg(
        1283,
        "poll result : fds[0].revents(0x%4x), fds[1].revents(0x%4x)\n",
        fds[0].revents,
        fds[1].revents);
         
    if ( fds[0].revents & 1 )
    {
      rcvLen = receiveIncomingData(clientfd);
      if ( rcvLen <= 0 )
      {
        if ( btif_trace_level > iLevelMessages )  LogMsg(1283, "rcvLen = %d\n", rcvLen);
        v7 = &clientfd;
        goto LABEL_27;
      }
    }
    if ( fds[0].revents & 0x10 )
    {
      if ( btif_trace_level > iLevelMessages )
        LogMsg(1283, "fds[0].revents & POLLHUP");
      v7 = &clientfd;
      goto LABEL_27;
    }
  }
  while ( !(fds[1].revents & 1) );
  if ( btif_trace_level > iLevelMessages )
  {
    v9 = "terminate thread from socket pair\n";
LABEL_33:
    LogMsg(1283, v9);
  }
LABEL_34:
  return;
}