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

📄 udip2soc.c

📁 gdb是linux下的一个远程调试环境.能让你很方便地调试linux下的代码.
💻 C
📖 第 1 页 / 共 3 页
字号:
UDICount	count;		/* in -- count of objects to be transferred */UDISizeT	size;		/* in -- size of each object */UDICount	*count_done;	/* out - count actually transferred */UDIBool		direction;	/* in -- high-to-low or reverse */{    UDIInt32	service_id = UDICopy_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIResource(udrs, &from);    udr_UDIResource(udrs, &to);    udr_UDICount(udrs, &count);    udr_UDISizeT(udrs, &size);    udr_UDIBool(udrs, &direction);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDICount(udrs, count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/***************************************************************** UDI_EXECUTE* UDIExecute() continues execution  of  the  default* process from the current PC.*/UDIError UDIExecute(){    UDIInt32	service_id = UDIExecute_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/******************************************************************** UDI_STEP* UDIStep()  specifies  a  number  of  "instruction"* steps  to  make.*/UDIError UDIStep(steps, steptype, range)UDIUInt32	steps;		/* in -- number of steps */UDIStepType	steptype;       /* in -- type of stepping to be done */UDIRange	range;          /* in -- range if StepInRange is TRUE */{    UDIInt32	service_id = UDIStep_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIInt32(udrs, &steps);    udr_UDIStepType(udrs, &steptype);    udr_UDIRange(udrs, &range);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/******************************************************************** UDI_STOP* UDIStop() stops the default process*/UDIVoid UDIStop(){    if(!strcmp(session[current].soc_con_p->domain_string, "AF_UNIX"))        kill(session[current].soc_con_p->tip_pid, SIGUSR1);    else	udr_signal(udrs);    return;}/******************************************************************** UDI_WAIT* UDIWait() returns the state of the target  procesor.*/UDIError UDIWait(maxtime, pid, stop_reason)UDIInt32   maxtime;        /* in -- maximum time to wait for completion */UDIPId     *pid;           /* out -- pid of process which stopped if any */UDIUInt32  *stop_reason;   /* out -- PC where process stopped */{    UDIInt32	service_id = UDIWait_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIInt32(udrs, &maxtime);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIPId(udrs, pid);    udr_UDIUInt32(udrs, stop_reason);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/********************************************************** UDI_SET_BREAKPOINT* UDISetBreakpoint() sets a breakpoint  at  an  adress* and  uses  the  passcount  to state how many* times that instruction should  be  hit  before  the* break  occurs.*/UDIError UDISetBreakpoint (addr, passcount, type, break_id)UDIResource	addr;		/* in -- where breakpoint gets set */UDIInt32	passcount;	/* in -- passcount for breakpoint  */UDIBreakType	type;		/* in -- breakpoint type */UDIBreakId	*break_id;	/* out - assigned break id */{    UDIInt32	service_id = UDISetBreakpoint_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIResource(udrs, &addr);    udr_UDIInt32(udrs, &passcount);    udr_UDIBreakType(udrs, &type);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIBreakId(udrs, break_id);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/******************************************************** UDI_QUERY_BREAKPOINT*/UDIError UDIQueryBreakpoint (break_id, addr, passcount, type, current_count)UDIBreakId	break_id;	/* in -- assigned break id */UDIResource	*addr;		/* out - where breakpoint was set */UDIInt32	*passcount;	/* out - trigger passcount for breakpoint  */UDIBreakType	*type;		/* out - breakpoint type */UDIInt32	*current_count;	/* out - current count for breakpoint  */{    UDIInt32	service_id = UDIQueryBreakpoint_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIBreakId(udrs, &break_id);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIResource(udrs, addr);    udr_UDIInt32(udrs, passcount);    udr_UDIBreakType(udrs, type);    udr_UDIInt32(udrs, current_count);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/******************************************************** UDI_CLEAR_BREAKPOINT* UDIClearBreakpoint() is used to  clear  a  breakpoint.*/UDIError UDIClearBreakpoint (break_id)UDIBreakId	break_id;	/* in -- assigned break id */{    UDIInt32	service_id = UDIClearBreakpoint_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIBreakId(udrs, &break_id);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/************************************************************** UDI_GET_STDOUT* UDIGetStdout()  is  called   when   a   call   to* UDIWait() indicates there is STD output data ready. */UDIError UDIGetStdout(buf, bufsize, count_done)UDIHostMemPtr	buf;		/* out -- buffer to be filled */UDISizeT	bufsize;	/* in  -- buffer size in bytes */UDISizeT	*count_done;	/* out -- number of bytes written to buf */{    UDIInt32	service_id = UDIGetStdout_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDISizeT(udrs, &bufsize);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDISizeT(udrs, count_done);    udr_bytes(udrs, buf, *count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/************************************************************** UDI_GET_STDERR* UDIGetStderr()  is  called   when   a   call   to* UDIWait() indicates there is STDERR output data ready*/UDIError UDIGetStderr(buf, bufsize, count_done)UDIHostMemPtr	buf;		/* out -- buffer to be filled */UDISizeT	bufsize;	/* in  -- buffer size in bytes */UDISizeT	*count_done;	/* out -- number of bytes written to buf */{    UDIInt32	service_id = UDIGetStderr_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDISizeT(udrs, &bufsize);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDISizeT(udrs, count_done);    udr_bytes(udrs, buf, *count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/*************************************************************** UDI_PUT_STDIN* UDIPutStdin() is called whenever the DFE wants to* deliver an input character to the TIP.*/UDIError UDIPutStdin (buf, count, count_done)UDIHostMemPtr	buf;		/* in -- buffer to be filled */UDISizeT	count;		/* in -- buffer size in bytes */UDISizeT	*count_done;	/* out - number of bytes written to buf */{    UDIInt32	service_id = UDIPutStdin_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDISizeT(udrs, &count);    udr_bytes(udrs, buf, count);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDISizeT(udrs, count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/************************************************************** UDI_STDIN_MODE* UDIStdinMode() is used to change the mode that chazcters* are fetched from the user.*/UDIError	UDIStdinMode(mode)UDIMode		*mode;		/* out - */{    UDIInt32	service_id = UDIStdinMode_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIMode(udrs, mode);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/*************************************************************** UDI_PUT_TRANS* UDIPutTrans() is used to feed input to  the  passthru  mode.*/UDIError	UDIPutTrans (buf, count, count_done)UDIHostMemPtr	buf;		/* in -- buffer address containing input data */UDISizeT	count;		/* in -- number of bytes in buf */UDISizeT	*count_done;	/* out-- number of bytes transfered */{    UDIInt32	service_id = UDIPutTrans_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDISizeT(udrs, &count);    udr_bytes(udrs, buf, count);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDISizeT(udrs, count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/*************************************************************** UDI_GET_TRANS* UDIGetTrans() is used to get output lines from the* passthru mode.*/UDIError	UDIGetTrans (buf, bufsize, count_done)UDIHostMemPtr	buf;		/* out -- buffer to be filled */UDISizeT	bufsize;	/* in  -- size of buf */UDISizeT	*count_done;	/* out -- number of bytes in buf */{    UDIInt32	service_id = UDIGetTrans_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDISizeT(udrs, &bufsize);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDISizeT(udrs, count_done);    udr_bytes(udrs, buf, *count_done);    udr_UDIError(udrs, &dfe_errno);	/* get any TIP error */    return dfe_errno;}/************************************************************** UDI_Trans_Mode* UDITransMode() is used to change the mode that the* transparent routines operate in.*/UDIError UDITransMode(mode)UDIMode		*mode;		/* out  -- selected mode */{    UDIInt32	service_id = UDITransMode_c;    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    udr_UDIMode(udrs, mode);    udr_sendnow(udrs);    if(udr_errno) return udr_errno;    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    udr_UDIError(udrs, &dfe_errno);    return dfe_errno;}/******************************************************************** UDI_TEST*/UDIError UDITest( cnt, str_p, array)UDISizeT	cnt;UDIHostMemPtr	str_p;UDIInt32	array[];{    UDIInt32	service_id = UDITest_c;    UDIInt16	scnt = cnt;    UDISizeT	r_cnt;    char	buf[256];    udr_errno = 0;    udrs->udr_op = UDR_ENCODE;		/* send all "in" parameters */    udr_UDIInt32(udrs, &service_id);    printf("send	cnt=%d scnt=%d\n", cnt, scnt);    udr_UDISizeT(udrs, &cnt);    udr_UDIInt16(udrs, &scnt);    printf("	array[0]=0x%x array[1]=0x%x array[2]=0x%x array[3]=0x%x\n",    	array[0], array[1], array[2], array[3]);    udr_bytes(udrs, (char*)array, 4*sizeof(UDIInt32));    printf("	string=%s\n", str_p);    udr_string(udrs, str_p);    udr_sendnow(udrs);    if(udr_errno)    {	fprintf(stderr, " DFE-ipc Send ERROR\n");	return udr_errno;    }    udrs->udr_op = UDR_DECODE;		/* receive all "out" parameters */    printf("recv	");    udr_UDISizeT(udrs, &r_cnt);    udr_UDIInt16(udrs, &scnt);    printf("	rcnt=%d scnt=%d\n", r_cnt, scnt);    udr_bytes(udrs, (char*)array, 4*sizeof(UDIInt32));    printf("	array[0]=0x%x array[1]=0x%x array[2]=0x%x array[3]=0x%x\n",    	array[0], array[1], array[2], array[3]);    udr_string(udrs, str_p);    printf("	string=%s\n", str_p);    udr_UDIError(udrs, &dfe_errno);    return dfe_errno;}UDIUInt32 UDIGetDFEIPCId(){    return ((company_c << 16) + (product_c << 12) + version_c);}

⌨️ 快捷键说明

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