trap_retval ReqProg_go( void ) { prog_go_ret *ret; ret = GetOutPtr( 0 ); ret->conditions = COND_TERMINATE; return( sizeof( *ret ) ); }
trap_retval ReqRedirect_stdin( void ) { redirect_stdin_ret *ret; ret = GetOutPtr( 0 ); ret->err = 1; return( sizeof( *ret ) ); }
unsigned ReqRedirect_stdout( void ) { redirect_stdout_ret *ret; ret = GetOutPtr( 0 ); ret->err = 1; return( sizeof( *ret ) ); }
trap_retval ReqMachine_data( void ) { machine_data_req *acc; machine_data_ret *ret; unsigned_8 *data; acc = GetInPtr( 0 ); ret = GetOutPtr( 0 ); data = GetOutPtr( sizeof( *ret ) ); ret->cache_start = 0; ret->cache_end = ~(addr_off)0; *data = 0; if( IsSegSize32( acc->addr.segment ) ) { *data |= X86AC_BIG; } return( sizeof( *ret ) + sizeof( *data ) ); }
//OBSOLETE - use ReqRead_regs unsigned ReqRead_fpu() { trap_fpu_regs *regs; regs = GetOutPtr( 0 ); ReadFPU( (struct x86_fpu *)regs ); return( sizeof( *regs ) ); }
trap_retval ReqFile_run_cmd( void ) { file_run_cmd_ret *ret; ret = GetOutPtr( 0 ); ret->err = 0; //NYI: No error? return( sizeof( *ret ) ); }
static unsigned_16 AccReadUserKey() { rd_key_return FAR *retblk; retblk = GetOutPtr( 0 ); retblk->key = GtKey(); return( sizeof( rd_key_return ) ); }
trap_retval ReqChecksum_mem( void ) { checksum_mem_ret *ret; ret = GetOutPtr(0); ret->result = 0; return( sizeof( *ret ) ); }
unsigned ReqRead_mem( void ) /**************************/ { read_mem_req *acc; acc = GetInPtr( 0 ); return( ReadMemory( &acc->mem_addr, GetOutPtr( 0 ), acc->len ) ); }
unsigned ReqRead_regs( void ) { mad_registers *mr; mr = GetOutPtr( 0 ); ReadCPU( &mr->mips ); return( sizeof( mr->mips ) ); }
//OBSOLETE - use ReqMachine_data trap_retval ReqAddr_info( void ) { addr_info_ret *ret; ret = GetOutPtr( 0 ); ret->is_big = FALSE; return( sizeof( *ret ) ); }
trap_retval ReqFile_erase( void ) { file_erase_ret *ret; ret = GetOutPtr( 0 ); ret->err = 1; //NYI: return( sizeof( *ret ) ); }
trap_retval ReqThread_thaw( void ) { thread_thaw_ret *ret; ret = GetOutPtr( 0 ); ret->err = 0; return( sizeof( *ret ) ); }
trap_retval ReqSet_break( void ) { set_break_ret *ret; ret = GetOutPtr( 0 ); ret->old = 0; return( sizeof( *ret ) ); }
trap_retval ReqWrite_io( void ) { write_io_ret *ret; ret = GetOutPtr( 0 ); ret->len = 0; return( sizeof( *ret ) ); }
trap_retval ReqChecksum_mem( void ) { checksum_mem_ret *ret; ret = GetOutPtr( 0 ); ret->result = 0; // Dead programs do not tend to change much return( sizeof( *ret ) ); }
trap_retval ReqRunThread_info( void ) { run_thread_info_req *acc; run_thread_info_ret *ret; char *header_txt; acc = GetInPtr( 0 ); ret = GetOutPtr( 0 ); header_txt = GetOutPtr( sizeof( *ret ) ); switch( acc->col ) { case 0: ret->info = RUN_THREAD_INFO_TYPE_NAME; ret->width = 25; strcpy( header_txt, "ID Name" ); break; case 1: ret->info = RUN_THREAD_INFO_TYPE_EXTRA; ret->width = 21; strcpy( header_txt, " Time" ); break; case 2: ret->info = RUN_THREAD_INFO_TYPE_STATE; ret->width = 10; strcpy( header_txt, "State" ); break; case 3: ret->info = RUN_THREAD_INFO_TYPE_CS_EIP; ret->width = 15; strcpy( header_txt, "cs:eip" ); break; default: ret->info = RUN_THREAD_INFO_TYPE_NONE; ret->width = 0; *header_txt = 0; break; } return( sizeof( *ret ) + strlen( header_txt ) + 1 ); }
trap_retval ReqThread_get_extra( void ) { char *ret; ret = GetOutPtr( 0 ); ret[0] = '\0'; return( strlen( ret ) + 1 ); }
unsigned ReqRead_fpu( void ) /**************************/ { trap_fpu_regs *regs; regs = GetOutPtr( 0 ); Read387( regs ); return( sizeof( *regs ) ); }
unsigned ReqRead_cpu( void ) /**************************/ { trap_cpu_regs *regs; regs = GetOutPtr( 0 ); *regs = DebugRegs; return( sizeof( *regs ) ); }
/* We do not support I/O port access on MIPS, although if we really * wanted to, we could access memory mapped ISA/PCI I/O ports on systems * where those are provided. Would require root privileges. */ unsigned ReqRead_io( void ) { read_io_req *acc; void *ret; acc = GetInPtr( 0 ); ret = GetOutPtr( 0 ); return( 0 ); }
unsigned ReqGet_next_alias() { get_next_alias_ret *ret; ret = GetOutPtr( 0 ); ret->seg = 0; ret->alias = 0; return( sizeof( *ret ) ); }
unsigned ReqFile_run_cmd( void ) { file_run_cmd_ret *ret; //NYI: to do ret = GetOutPtr( 0 ); ret->err = 0; return( sizeof( *ret ) ); }
trap_retval ReqSet_watch( void ) { set_watch_ret *ret; ret = GetOutPtr( 0 ); ret->err = 0; ret->multiplier = USING_DEBUG_REG | 1; return( sizeof( *ret ) ); }
//OBSOLETE - use ReqMachine_data trap_retval ReqAddr_info( void ) { addr_info_ret *ret; _DBG1(( "AccAddrInfo" )); ret = GetOutPtr( 0 ); ret->is_big = 1; return( sizeof( *ret ) ); }
unsigned ReqRead_regs( void ) { mad_registers *mr; mr = GetOutPtr(0); ReadCPU( &mr->x86.cpu ); ReadFPU( &mr->x86.fpu ); return( sizeof( mr->x86 ) ); }
trap_retval ReqGet_next_alias( void ) { get_next_alias_ret *ret; ret = GetOutPtr( 0 ); ret->seg = 0; ret->alias = 0; return( sizeof( *ret ) ); }
trap_retval ReqFile_read( void ) { file_read_req *acc; file_read_ret *ret; int retval; acc = GetInPtr( 0 ); ret = GetOutPtr( 0 ); retval = IORead( acc->handle, GetOutPtr( sizeof( *ret ) ), acc->len ); if( retval < 0 ) { ret->err = retval; retval = 0; } else { ret->err = 0; } return( sizeof( *ret ) + retval ); }
trap_retval ReqRead_regs( void ) { mad_registers *mr; mr = GetOutPtr(0); mr->x86.cpu = *(struct x86_cpu *)&Regs; Read387( &mr->x86.u.fpu ); return( sizeof( mr->x86 ) ); }
trap_retval ReqThread_set( void ) { thread_set_ret *ret; ret = GetOutPtr( 0 ); ret->err = 0; ret->old_thread = Core.hdr.psdata.pid; return( sizeof( *ret ) ); }