OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [debug/] [gdbcomm.c] - Diff between revs 321 and 439

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 321 Rev 439
Line 32... Line 32...
#include <netinet/tcp.h>
#include <netinet/tcp.h>
#include <inttypes.h>
#include <inttypes.h>
 
 
#include "gdb.h"
#include "gdb.h"
#include "gdbcomm.h"
#include "gdbcomm.h"
 
#include "vapi.h"
#include "sim-config.h"
#include "sim-config.h"
 
 
static unsigned int serverIP = 0;
static unsigned int serverIP = 0;
static unsigned int serverPort = 0;
static unsigned int serverPort = 0;
static unsigned int server_fd = 0;
static unsigned int server_fd = 0;
Line 566... Line 567...
      close(gdb_fd);
      close(gdb_fd);
      gdb_fd = 0;
      gdb_fd = 0;
    }
    }
}
}
 
 
static int gdb_write(void* buf,int len)
static int gdb_write(const void* buf,int len)
{
{
  int n;
  int n, log_n = 0;
  char* w_buf = (char*)buf;
  const char* w_buf = (const char*)buf;
 
  const uint32_t* log_buf = (const uint32_t*)buf;
  struct pollfd block;
  struct pollfd block;
 
 
  while(len)
  while(len) {
    {
    if((n = write(gdb_fd,w_buf,len)) < 0) {
      if((n = write(gdb_fd,w_buf,len)) < 0)
      switch(errno) {
        {
 
          switch(errno)
 
            {
 
            case EWOULDBLOCK: /* or EAGAIN */
            case EWOULDBLOCK: /* or EAGAIN */
              /* We've been called on a descriptor marked
              /* We've been called on a descriptor marked
                 for nonblocking I/O. We better simulate
                 for nonblocking I/O. We better simulate
                 blocking behavior. */
                 blocking behavior. */
              block.fd = gdb_fd;
              block.fd = gdb_fd;
Line 597... Line 596...
              return -1;
              return -1;
            default:
            default:
              return -1;
              return -1;
            }
            }
        }
        }
      else
    else {
        {
 
          len -= n;
          len -= n;
          w_buf += n;
          w_buf += n;
 
      if ( config.debug.vapi_id )
 
        for ( log_n += n; log_n >= 4; log_n -= 4, ++ log_buf )
 
          vapi_write_log_file( VAPI_COMMAND_SEND, config.debug.vapi_id, ntohl(*log_buf) );
        }
        }
    }
    }
  return 0;
  return 0;
}
}
 
 
static int gdb_read(void* buf,int len)
static int gdb_read(void* buf,int len)
{
{
  int n;
  int n, log_n = 0;
  char* r_buf = (char*)buf;
  char* r_buf = (char*)buf;
 
  uint32_t* log_buf = (uint32_t*)buf;
  struct pollfd block;
  struct pollfd block;
 
 
  while(len)
  while(len) {
    {
    if((n = read(gdb_fd,r_buf,len)) < 0) {
      if((n = read(gdb_fd,r_buf,len)) < 0)
      switch(errno) {
        {
 
          switch(errno)
 
            {
 
            case EWOULDBLOCK: /* or EAGAIN */
            case EWOULDBLOCK: /* or EAGAIN */
              /* We've been called on a descriptor marked
              /* We've been called on a descriptor marked
                 for nonblocking I/O. We better simulate
                 for nonblocking I/O. We better simulate
                 blocking behavior. */
                 blocking behavior. */
              block.fd = gdb_fd;
              block.fd = gdb_fd;
Line 633... Line 632...
              continue;
              continue;
            default:
            default:
              return -1;
              return -1;
            }
            }
        }
        }
      else if(n == 0)
    else if(n == 0) {
        {
 
          close(gdb_fd);
          close(gdb_fd);
          gdb_fd = 0;
          gdb_fd = 0;
          return -1;
          return -1;
        }
        }
      else
    else {
        {
 
          len -= n;
          len -= n;
          r_buf += n;
          r_buf += n;
 
      if ( config.debug.vapi_id )
 
        for ( log_n += n; log_n >= 4; log_n -= 4, ++ log_buf )
 
          vapi_write_log_file( VAPI_COMMAND_REQUEST, config.debug.vapi_id, ntohl(*log_buf) );
        }
        }
    }
    }
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.