/**
 *  name::  StreamCtrlInit
 *          初始化StreamCtrl控制结构体(for PlayUtilityHandler.c)
 **/
static int StreamCtrlInit(void)
{
    StreamCtrl_Type *streamCtrl;

    playerLogDebug("StreamCtrlInit.\n");

    //TODO:: init message queue
    gMsgQueue = MessageQueueCreate(sizeof(PlayerCommand_Type));

    //TODO:: init gStreamCtrl && gPlayerCtrl
    streamCtrl = (StreamCtrl_Type *)malloc(sizeof(StreamCtrl_Type));
    if (streamCtrl == NULL)
        playerLogError("streamCtrl malloc error.\n");
    memset(streamCtrl, 0, sizeof(StreamCtrl_Type));
    streamCtrl->msgQueue = gMsgQueue;

    if (ThreadMutexLock(gStreamCtrlMutex))
        playerLogWarning("thread mutex locking error.\n");
    gStreamCtrl = streamCtrl;
    playerLogInfo("gStreamCtrl[%p],streamCtrl->msgQueue[%p]\n", gStreamCtrl, streamCtrl->msgQueue);
    if (ThreadMutexUnLock(gStreamCtrlMutex))
        playerLogWarning("thread mutex locking error.\n");

    return 0;
}
Esempio n. 2
0
void Main(void)
{
    int fd;
    int sink, source;

    fd = MessageQueueCreate("pipe1");
    Print("create mq returned %d\n", fd);

    source = Spawn_Program ("/c/cat.exe /c/file1", 0, fd);
    sink = Spawn_Program ("/c/wc.exe", fd, 1);
    Close(fd);

    Wait(sink);
    Wait(source);
    Exit();
}
Esempio n. 3
0
int Main (int argc , char ** argv)
{
  int i;
  int ret;
  int done;
  int eoln;
  int debug;
  char *curr;
  char *dest;
  char line[256];
  int infd, outfd;
  char tempName[2];
  char strName[20];
  int numCommand;
  int   count ;         /* child process's argc */
  char command[256];

  done = 0;
  while (!done) {
     Printf("shell %% ");

     eoln = 0;
     count = 0;

     Read_Line( line, sizeof(line) );

     line[strlen(line)-1] = '\0';

     /* blank line */
     if (!strcmp(line, "")) continue;

     if (!strcmp(line, "exit")) {
         return 0;
     } else if (!strcmp(line, "debug")) {
	 debug = 1;
	 continue;
     } else if (!strcmp(line, "nodebug")) {
	 debug = 0;
	 continue;
     }

    split(line, &numCommand);
    infd = 0;
    outfd = 1;

    for (i=0; i < numCommand-1; i++) {
        if (commands[i].outFile) {
	    Printf("Error: file redirection for command other than last one in pipeline\n");
	    break;
	}
    }
    if (i != numCommand-1) continue;

    if (debug) {
	for (i=0; i < numCommand; i++) {
	    Printf("command %d = %s\n", i, commands[i].command);
	}
    }

    for (i=0; i < numCommand; i++) {
 	 if (outfd != 1) infd = outfd;

         if (i == numCommand-1)  {
	     if (commands[i].outFile) {
		 /* last one goes to a file */
		 outfd = Open(commands[i].outFile, O_WRITE|O_CREATE);
		 if (outfd < 0) {
		     Printf("Error opening %s\n", commands[i].outFile);
		 }
	     } else {
		 /* last one goes to stdout */
		 outfd = 1;
	     }
	 } else {
             strcpy(strName, "/dev/pipe");
	     tempName[0] = count + '0';
	     count++;
	     tempName[1] = '\0';
	     strcat(strName, tempName);
 	     outfd = MessageQueueCreate(strName);
	     if (outfd < 0) {
	         Printf("pipe failed\n");
		 continue;
	     }
	 }

         /* now run it */
	 memset(command, '\0', sizeof(command));
         if (commands[i].command[0] != '/') {
	     //	add implict path to /c for programs
	     strcpy(command, "/c/");
             for (curr=commands[i].command, dest=&command[3]; *curr; curr++) {
                if (*curr == ' ') break;
                *(dest++) = *curr;
             }
             strcat(command, ".exe");
             strcat(command, curr);
             // Printf("command is %s\n", command);
         } else {
             strcpy(command, commands[i].command);
         }

         commands[i].pid = Spawn_Program ( command , infd, outfd);
         if ( commands[i].pid <= 0 )  {  /* Unable to proc_start */
            Printf ( "%s: Command not found\n", commands[i].command) ;
            continue;
         } else {
	    if (debug) Printf("spawned pid %d, command = %s\n", 
		commands[i].pid, commands[i].command);
   	    if (infd != 0) Close(infd);
	 }
    }

    /* now wait for them all to finish */
    for (i=0; i < numCommand; i++) {
	if (commands[i].pid > 0) {
	    ret = Wait(commands[i].pid);
	    if (debug) Printf("process %d exited\n", commands[i].pid);
	}
    }
    if (debug) Printf("all processes exited\n");
  }

  return 0;
}
Esempio n. 4
0
TVerdict CTestMsgqueue::doTestStepL()
	{
	int err;

  	if(TestStepName() == KMessageQueueCreate)
   		{
   		INFO_PRINTF1(_L("MessageQueueCreate():"));
   	 	err = MessageQueueCreate();
   	 	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   		if(TestStepName() == KMessageQueueControl)
   		{
   		INFO_PRINTF1(_L("MessageQueueControl():"));
   		err = MessageQueueControl();
   		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   		}
   	else
   		if(TestStepName() == KIntgTest1)
   		{
   	   	INFO_PRINTF1(_L("IntgTest1():"));
   	   	err = IntgTest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   		if(TestStepName() == KIntgTest2)
   		{
   		INFO_PRINTF1(_L("IntgTest2():"));
   		err = IntgTest2();
   		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   		}
   	else
   		if(TestStepName() == KIntgTest3)
   		{
   	  	INFO_PRINTF1(_L("IntgTest3():"));
   	   	err = IntgTest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   	   	if(TestStepName() == KIntgTest4)
   		{
   	   	INFO_PRINTF1(_L("IntgTest4():"));
   	   	err = IntgTest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   	   	if(TestStepName() == KIntgTest5)
   		{
   	   	INFO_PRINTF1(_L("IntgTest5():"));
   	   	err = IntgTest5();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest6)
   		{
   	   	INFO_PRINTF1(_L("IntgTest6():"));
   	   	err = IntgTest6();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   		if(TestStepName() == KIntgTest7)
   		{
   	   	INFO_PRINTF1(_L("IntgTest7():"));
   	   	err = IntgTest7();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest8)
   		{
   	   	INFO_PRINTF1(_L("IntgTest8():"));
   	   	err = IntgTest8();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest9)
   		{
   	   	INFO_PRINTF1(_L("IntgTest9():"));
   	   	err = IntgTest9();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest10)
   		{
   	   	INFO_PRINTF1(_L("IntgTest10():"));
   	   	err = IntgTest10();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest11)
   		{
   	   	INFO_PRINTF1(_L("IntgTest11():"));
   	   	err = IntgTest11();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest12)
   		{
   	   	INFO_PRINTF1(_L("IntgTest12():"));
   	   	err = IntgTest12();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   		if(TestStepName() == KIntgTest13)
   		{
   	   	INFO_PRINTF1(_L("IntgTest13():"));
   	   	err = IntgTest13();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   		if(TestStepName() == KIntgTest14)
   		{
   	   	INFO_PRINTF1(_L("IntgTest14():"));
   	   	err = IntgTest14();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest15)
   		{
   	   	INFO_PRINTF1(_L("IntgTest15():"));
   	   	err = IntgTest15();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   		if(TestStepName() == KIntgTest16)
   		{
   	   	INFO_PRINTF1(_L("IntgTest16():"));
   	   	err = IntgTest16();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else
   		if(TestStepName() == KIntgTest17)
   		{
   		INFO_PRINTF1(_L("IntgTest17():"));
   		err = IntgTest17();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else
   	   	if(TestStepName() == KIntgTest6_1)
   		{
   	   	INFO_PRINTF1(_L("IntgTest6_1():"));
   	   	err = IntgTest6_1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else if(TestStepName() == Kmsggettest1)
   		{
   		INFO_PRINTF1(_L("msggettest1():"));
   		err = msggettest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}   	
	else if(TestStepName() == Kmsggettest2)
   		{
   		INFO_PRINTF1(_L("msggettest2():"));
   		err = msggettest2();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}  
   	else if(TestStepName() == Kmsggettest3)
   		{
   		INFO_PRINTF1(_L("msggettest3():"));
   		err = msggettest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsggettest4)
   		{
   		INFO_PRINTF1(_L("msggettest4():"));
   		err = msggettest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsggettest5)
   		{
   		INFO_PRINTF1(_L("msggettest5():"));
   		err = msggettest5();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsggettest6)
   		{
   		INFO_PRINTF1(_L("msggettest6():"));
   		err = msggettest6();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
	else if(TestStepName() == KMsggetCreateKey)
   		{
   		INFO_PRINTF1(_L("MsggetCreateKey():"));
   		err = MsggetCreateKey();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgctltest1)
   		{
   		INFO_PRINTF1(_L("msgctltest1():"));
   		err = msgctltest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgctltest2)
   		{
   		INFO_PRINTF1(_L("msgctltest2():"));
   		err = msgctltest2();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgctltest3)
   		{
   		INFO_PRINTF1(_L("msgctltest3():"));
   		err = msgctltest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgctltest4)
   		{
   		INFO_PRINTF1(_L("msgctltest4():"));
   		err = msgctltest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgctltest5)
   		{
   		INFO_PRINTF1(_L("msgctltest5():"));
   		err = msgctltest5();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest1)
   		{
   		INFO_PRINTF1(_L("msgsndtest1():"));
   		err = msgsndtest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest2)
   		{
   		INFO_PRINTF1(_L("msgsndtest2():"));
   		err = msgsndtest2();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest3)
   		{
   		INFO_PRINTF1(_L("msgsndtest3():"));
   		err = msgsndtest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest4)
   		{
   		INFO_PRINTF1(_L("msgsndtest4():"));
   		err = msgsndtest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest5)
   		{
   		INFO_PRINTF1(_L("msgsndtest5():"));
   		err = msgsndtest5();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgsndtest6)
   		{
   		INFO_PRINTF1(_L("msgsndtest6():"));
   		err = msgsndtest6();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgrcvtest1)
   		{
   		INFO_PRINTF1(_L("msgrcvtest1():"));
   		err = msgrcvtest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgrcvtest2)
   		{
   		INFO_PRINTF1(_L("msgrcvtest2():"));
   		err = msgrcvtest2();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   		}
   	else if(TestStepName() == Kmsgrcvtest3)
   		{
   		INFO_PRINTF1(_L("msgrcvtest3():"));
   		err = msgrcvtest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Kmsgrcvtest4)
   		{
   		INFO_PRINTF1(_L("msgrcvtest4():"));
   		err = msgrcvtest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Ksndrcvtest1)
   		{
   		INFO_PRINTF1(_L("sndrcvtest1():"));
   		err = sndrcvtest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Ksndrcvtest2)
   		{
   		INFO_PRINTF1(_L("sndrcvtest2():"));
   		err = sndrcvtest2();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}   
   	else if(TestStepName() == Ksndrcvtest3)
   		{
   		INFO_PRINTF1(_L("sndrcvtest3():"));
   		err = sndrcvtest3();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	else if(TestStepName() == Ksndrcvtest4)
   		{
   		INFO_PRINTF1(_L("sndrcvtest4():"));
   		err = sndrcvtest4();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}	  
   	else if(TestStepName() == Kthsndrcvtest1)
   		{
   		INFO_PRINTF1(_L("thsndrcvtest1():"));
   		err = thsndrcvtest1();
   	   	SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   	   	}
   	   	
	return TestStepResult(); 

	}