📄 gdb-fileio.c
字号:
} // 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 + -