📄 main_iacxl10_2004_3_16.cpp
字号:
#define DE_IA#include <stdio.h>#include <stdlib.h>#include <string.h>#include "lljapi.h"#include "armia.h"#include "mem.h"#include "irq.h"int main(int argc,char *argv[]){ SHM_stru myshm; static ARMISS_stru state; key_t mykey; int shmid,semid; pid_t pid; void *shmdata; char *buffer; union semun sunion; struct sembuf sb; mykey=ftok("/tmp",'b'); shmid=shmget(mykey,SHMDATASIZE,IPC_CREAT | SHM_R | SHM_W); //printf("arm shmid=%d\n",shmid); if(shmid==-1) {printf("child shmget error\n"); exit(1); } shmdata=shmat(shmid,0,0); if(shmdata==(void *)-1) {printf("child shmat error\n"); exit(1); } semid=*(int *)shmdata; //printf("arm semid=%d\n",semid); myshm.SHMcmdname=(int *)shmdata+sizeof(int); myshm.SHMrn=(int *)myshm.SHMcmdname+sizeof(int); myshm.SHMregval=(unsigned long *)myshm.SHMrn+30*sizeof(int); myshm.SHMdata=(unsigned char *)myshm.SHMregval+sizeof(unsigned long); myshm.SHMmaddr=(unsigned long *)myshm.SHMdata+sizeof(char); myshm.SHMsize=(int *)myshm.SHMmaddr+sizeof(unsigned long); myshm.SHMfilename=(char *)myshm.SHMsize+sizeof(int); //SHMSptr->End=(ISSstate *)SHMfilename+100; myshm.SHMendcondition=(unsigned int *)myshm.SHMfilename+100; myshm.SHMreg[0]=(unsigned long *)myshm.SHMendcondition+sizeof(unsigned int); myshm.SHMbigendsig=(unsigned int *)myshm.SHMreg[0]+16*sizeof(unsigned long); myshm.SHMcommandline=(char *)myshm.SHMbigendsig+sizeof(unsigned int); state.mem_reg(mem,getmem());//shao state.irq_reg( sendirq ); while(1){ //printf("waiting for arm full...\n"); locksem(semid,SN_ARMFULL); //printf("child process arm receive:\n"); //printf("receive,*SHMcmdname=%d\n",*myshm.SHMcmdname); state=advancecmd(state,semid,myshm); unlocksem(semid,SN_GDBEMPTY); //printf("free gdb empry...\n"); } shmdt(shmdata);// shmctl(shmid,IPC_RMID,NULL); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -