📄 gdb-fileio.c
字号:
} // cyg_hal_gdbfileio_open()__externC intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 intcyg_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 + -