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

📄 gdb-fileio.c

📁 eCos/RedBoot for勤研ARM AnywhereII(4510) 含全部源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
} // cyg_hal_gdbfileio_open()

__externC int
cyg_hal_gdbfileio_close( int fd, int *sig )
{
    unsigned int i=0;
    fio_int_t ffd;

    gdbfileio_newlib_to_fio_int_t( &fd, &ffd );
    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'c';
    __remcomOutBuffer[i++] = 'l';
    __remcomOutBuffer[i++] = 'o';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&ffd, &__remcomOutBuffer[i], sizeof(ffd) );
    // i now points after the parameter
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_close()

__externC int
cyg_hal_gdbfileio_read( int fd, void *buf, size_t count, int *sig )
{
    unsigned int i=0;
    fio_int_t ffd;
    fio_uint_t fcount;
    unsigned int uicount = (unsigned int)count;

    gdbfileio_newlib_to_fio_int_t( &fd, &ffd );
    gdbfileio_newlib_to_fio_uint_t( &uicount, &fcount );

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'r';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 'd';
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&ffd, &__remcomOutBuffer[i], sizeof(ffd) );
    // i now points after the parameter
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)buf,
                     sizeof(buf)*8 );
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&fcount, &__remcomOutBuffer[i], sizeof(fcount) );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_read()

__externC int
cyg_hal_gdbfileio_write( int fd, const void *buf, size_t count, int *sig )
{
    unsigned int i=0;
    fio_int_t ffd;
    fio_uint_t fcount;
    unsigned int uicount = (unsigned int)count;

    gdbfileio_newlib_to_fio_int_t( &fd, &ffd );
    gdbfileio_newlib_to_fio_uint_t( &uicount, &fcount );

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'w';
    __remcomOutBuffer[i++] = 'r';
    __remcomOutBuffer[i++] = 'i';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&ffd, &__remcomOutBuffer[i], sizeof(ffd) );
    // i now points after the parameter
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)buf,
                     sizeof(buf)*8 );
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&fcount, &__remcomOutBuffer[i], sizeof(fcount) );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_write()

__externC int
cyg_hal_gdbfileio_lseek( int fd, /* off_t */ long offset, int whence, int *sig )
{
    unsigned int i=0;
    fio_int_t ffd;
    fio_long_t foffset;
    fio_int_t fwhence;

    gdbfileio_newlib_to_fio_int_t( &fd, &ffd );
    gdbfileio_newlib_to_fio_long_t( &offset, &foffset );
    gdbfileio_newlib_to_fio_int_t( &whence, &fwhence );

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'l';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'k';
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&ffd, &__remcomOutBuffer[i], sizeof(ffd) );
    // i now points after the parameter
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&foffset, &__remcomOutBuffer[i],
                       sizeof(foffset) );
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&fwhence, &__remcomOutBuffer[i],
                       sizeof(fwhence) );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_lseek()

__externC int
cyg_hal_gdbfileio_rename( const char *oldpath, const char *newpath, int *sig )
{
    unsigned int i=0;
    size_t namelen;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'r';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'n';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 'm';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)oldpath,
                     sizeof(oldpath)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = '/';
    namelen = strlen( oldpath )+1; // includes '\0'
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)namelen,
                     sizeof(namelen)*8 );
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)newpath,
                     sizeof(newpath)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = '/';
    namelen = strlen( newpath )+1; // includes '\0'
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)namelen,
                     sizeof(namelen)*8 );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_rename()

__externC int
cyg_hal_gdbfileio_unlink( const char *pathname, int *sig )
{
    unsigned int i=0;
    size_t namelen;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'u';
    __remcomOutBuffer[i++] = 'n';
    __remcomOutBuffer[i++] = 'l';
    __remcomOutBuffer[i++] = 'i';
    __remcomOutBuffer[i++] = 'n';
    __remcomOutBuffer[i++] = 'k';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)pathname,
                     sizeof(pathname)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = '/';
    namelen = strlen( pathname )+1; // includes '\0'
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)namelen,
                     sizeof(namelen)*8 );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_unlink()

__externC int
cyg_hal_gdbfileio_isatty( int fd, int *sig )
{
    unsigned int i=0;
    fio_int_t ffd;

    gdbfileio_newlib_to_fio_int_t( &fd, &ffd );

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'i';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'y';
    __remcomOutBuffer[i++] = ',';
    i += chars_to_hex( (char *)&ffd, &__remcomOutBuffer[i], sizeof(ffd) );
    // i now points after the parameter
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_isatty()

__externC int
cyg_hal_gdbfileio_system( const char *command, int *sig )
{
    unsigned int i=0;
    size_t namelen;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 'y';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'm';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)command,
                     sizeof(command)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = '/';
    namelen = strlen( command )+1; // includes '\0'
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)namelen,
                     sizeof(namelen)*8 );
    __remcomOutBuffer[i] = 0;

    return gdbfileio_common_sendpkt( __remcomOutBuffer, sig );
} // cyg_hal_gdbfileio_system()

__externC int
cyg_hal_gdbfileio_gettimeofday( void *tv, void *tz, int *sig )
{
    unsigned int i=0;
    struct newlib_timeval *ntv = (struct newlib_timeval *)tv;
    struct fio_timeval ftv;
    int rc;

    // protocol doesn't support non-null timezone. Just enforce it here.
    if (NULL != tz)
        return -FILEIO_EINVAL;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'g';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'i';
    __remcomOutBuffer[i++] = 'm';
    __remcomOutBuffer[i++] = 'e';
    __remcomOutBuffer[i++] = 'o';
    __remcomOutBuffer[i++] = 'f';
    __remcomOutBuffer[i++] = 'd';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 'y';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)&ftv,
                     sizeof(&ftv)*8 );
    __remcomOutBuffer[i++] = ',';
    __remcomOutBuffer[i++] = '0'; // tzptr
    __remcomOutBuffer[i] = 0;

    rc = gdbfileio_common_sendpkt( __remcomOutBuffer, sig );

    // now ftv should have its contents filled
    gdbfileio_fio_to_newlib_time_t( &ftv.tv_sec, &ntv->tv_sec );
    gdbfileio_fio_to_newlib_long_t( &ftv.tv_usec, &ntv->tv_usec );

    return rc;
} // cyg_hal_gdbfileio_gettimeofday()

__externC int
cyg_hal_gdbfileio_stat( const char *pathname, struct newlib_stat *buf,
                        int *sig )
{
    unsigned int i=0;
    int rc;
    size_t namelen;
    struct fio_stat fbuf;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)pathname,
                     sizeof(pathname)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = '/';
    namelen = strlen( pathname )+1; // includes '\0'
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)namelen,
                     sizeof(namelen)*8 );
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)&fbuf,
                     sizeof(&fbuf)*8 );
    __remcomOutBuffer[i] = 0;

    rc = gdbfileio_common_sendpkt( __remcomOutBuffer, sig );

    // now fbuf should have its contents filled
    gdbfileio_fio_to_newlib_dev_t( &fbuf.st_dev, &buf->st_dev );
    gdbfileio_fio_to_newlib_ino_t( &fbuf.st_ino, &buf->st_ino );
    gdbfileio_fio_to_newlib_mode_t( &fbuf.st_mode, &buf->st_mode );
    gdbfileio_fio_to_newlib_nlink_t( &fbuf.st_nlink, &buf->st_nlink );
    gdbfileio_fio_to_newlib_uid_t( &fbuf.st_uid, &buf->st_uid );
    gdbfileio_fio_to_newlib_gid_t( &fbuf.st_gid, &buf->st_gid );
    gdbfileio_fio_to_newlib_dev_t( &fbuf.st_rdev, &buf->st_rdev );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
#if !defined(__svr4__) || defined(__PPC__) || defined(__sun__)
    gdbfileio_fio_to_newlib_long_t( &fbuf.st_blksize, &buf->st_blksize );
    gdbfileio_fio_to_newlib_long_t( &fbuf.st_blocks, &buf->st_blocks );
#endif
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_atime, &buf->st_atime );
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_mtime, &buf->st_mtime );
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_ctime, &buf->st_ctime );

    return rc;
} // cyg_hal_gdbfileio_stat()

__externC int
cyg_hal_gdbfileio_fstat( int fd, struct newlib_stat *buf, int *sig )
{
    unsigned int i=0;
    int rc;
    struct fio_stat fbuf;

    __remcomOutBuffer[i++] = 'F';
    __remcomOutBuffer[i++] = 'f';
    __remcomOutBuffer[i++] = 's';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = 'a';
    __remcomOutBuffer[i++] = 't';
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)fd,
                     sizeof(fd)*8 );
    // i now points after the parameter
    __remcomOutBuffer[i++] = ',';
    i += __intToHex( &__remcomOutBuffer[i], (target_register_t)&fbuf,
                     sizeof(&fbuf)*8 );
    __remcomOutBuffer[i] = 0;

    rc = gdbfileio_common_sendpkt( __remcomOutBuffer, sig );

    // now fbuf should have its contents filled
    gdbfileio_fio_to_newlib_dev_t( &fbuf.st_dev, &buf->st_dev );
    gdbfileio_fio_to_newlib_ino_t( &fbuf.st_ino, &buf->st_ino );
    gdbfileio_fio_to_newlib_mode_t( &fbuf.st_mode, &buf->st_mode );
    gdbfileio_fio_to_newlib_nlink_t( &fbuf.st_nlink, &buf->st_nlink );
    gdbfileio_fio_to_newlib_uid_t( &fbuf.st_uid, &buf->st_uid );
    gdbfileio_fio_to_newlib_gid_t( &fbuf.st_gid, &buf->st_gid );
    gdbfileio_fio_to_newlib_dev_t( &fbuf.st_rdev, &buf->st_rdev );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
    gdbfileio_fio_to_newlib_off_t( &fbuf.st_size, &buf->st_size );
#if !defined(__svr4__) || defined(__PPC__) || defined(__sun__)
    gdbfileio_fio_to_newlib_long_t( &fbuf.st_blksize, &buf->st_blksize );
    gdbfileio_fio_to_newlib_long_t( &fbuf.st_blocks, &buf->st_blocks );
#endif
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_atime, &buf->st_atime );
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_mtime, &buf->st_mtime );
    gdbfileio_fio_to_newlib_time_t( &fbuf.st_ctime, &buf->st_ctime );

    return rc;
} // cyg_hal_gdbfileio_fstat()

/* EOF gdb-fileio.c */

⌨️ 快捷键说明

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