Exemplo n.º 1
0
static int read_eq(union event *ev)
{
  mqmsg_t new_ev = NULL;
  if(MQ_Receive(eq, &new_ev, MQ_MSG_NOBLOCK))
  {
    *ev = *(union event *)new_ev;
    free(new_ev);
    return true;
  }
  else
    return false;
}
Exemplo n.º 2
0
void __wait_event(void)
{
  mqmsg_t ev;

  if(!eq_inited)
    return;

  if(MQ_Receive(eq, &ev, MQ_MSG_BLOCK))
  {
    process_event((union event *)ev);
    free(ev);
  }
}
Exemplo n.º 3
0
int Proc( int argc , char ** argv )
{
  int i;
  int done;
  int ret;
  int current;
  char buffer[40];
  char line[40];

  done = 0;
  i = 0;
  memset(buffer, '\0', sizeof(buffer));
  while ( !done) {
      i = 0;
      memset(buffer, '\0', sizeof(buffer));
      ret = MQ_Receive(0, buffer, sizeof(buffer));
      while (i < ret) {
	  if (buffer[i] == ESC) {
	     /* send pending line */
	     if (current) {
		 ret = MQ_Send(1, line, current);
		 if (ret < 0) {
		     char str[] = "tee: Send Error\n";
		     MQ_Send(2, str, strlen(str)+1);
		     return(-1);
		 }
		 ret = MQ_Send(2, line, current);
	     }
	     done = 1;
	     buffer[0] = ESC;
	     MQ_Send(1, buffer, 1);
	     return(0);
	  }
          line[current] = buffer[i++];
 	  if (current == sizeof(line)-1) {
	     /* line is full, send it out */
	     ret = MQ_Send(1, line, current+1);
	     if (ret < 0) {
		 char str[] = "tee: Send Error";
		 MQ_Send(2, str, strlen(str)+1);
		 return(-1);
	     }
	     ret = MQ_Send(2, line, current+1);
	     memset(line, '\0', sizeof(line));
	     current = 0;
          } else if ((line[current] == '\n') ||
	       (line[current] == '\r')) {
	     /* reached end of line, send it */
	     ret = MQ_Send(1, line, current+1);
	     if (ret < 0) {
		 char str[] = "tee: Send Error";
		 MQ_Send(2, str, strlen(str)+1);
		 return(-1);
	     }
	     ret = MQ_Send(2, line, current+1);
	     memset(line, '\0', sizeof(line));
	     current = 0;
	  } else {
	     current++;
	  }
      }
   }
}