コード例 #1
0
ファイル: cpu.c プロジェクト: danielschwierzeck/u-boot
/* delay x useconds */
void __udelay(unsigned long usec)
{
	struct sandbox_state *state = state_get_current();

	if (!state->skip_delays)
		os_usleep(usec);
}
コード例 #2
0
void TcpReceiver::executeThread()
{
	serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
	if (serverSocket < 0)
		return;

    u32 enable = 1;
	setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));

	struct sockaddr_in bindAddress;
	memset(&bindAddress, 0, sizeof(bindAddress));
	bindAddress.sin_family = AF_INET;
	bindAddress.sin_port = serverPort;
	bindAddress.sin_addr.s_addr = INADDR_ANY;

	s32 ret;
	if ((ret = bind(serverSocket, (struct sockaddr *)&bindAddress, sizeof(bindAddress))) < 0) {
		socketclose(serverSocket);
		return;
	}

	if ((ret = listen(serverSocket, 3)) < 0) {
		socketclose(serverSocket);
		return;
	}

	struct sockaddr_in clientAddr;
	s32 addrlen = sizeof(struct sockaddr);

    while(!exitRequested)
    {
        s32 clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &addrlen);
        if(clientSocket >= 0)
        {
            u32 ipAddress = clientAddr.sin_addr.s_addr;
            serverReceiveStart(this, ipAddress);
            int result = loadToMemory(clientSocket, ipAddress);
            serverReceiveFinished(this, ipAddress, result);
            socketclose(clientSocket);

            if(result > 0)
                break;
        }
        else
        {
            os_usleep(100000);
        }
    }

    socketclose(serverSocket);
}
コード例 #3
0
ファイル: ipmi_sample.c プロジェクト: yyscamper/yipmiutil
int __cdecl
#else
int
#endif
re_name_main(int argc, char **argv)
{
   int ret = 0;
   char c;
   uchar devrec[16];
   uchar chstatus[4];
   char *s1;
   int loops = 1;
   int nsec = 10;
   char *nodefile = NULL;
   int done = 0;
   FILE *fp = NULL;
   char nod[40]; char usr[24]; char psw[24];
   char drvtyp[10];
   int n;
#ifdef GET_SENSORS
   uchar *sdrlist;
#endif

   printf("%s ver %s\n", progname,progver);

   while ((c = getopt( argc, argv,"i:l:m:f:s:t:xEF:N:P:R:T:U:V:YZ:?")) != EOF ) 
      switch(c) {
          case 'm': /* specific IPMB MC, 3-byte address, e.g. "409600" */
                    g_bus = htoi(&optarg[0]);  /*bus/channel*/
                    g_sa  = htoi(&optarg[2]);  /*device slave address*/
                    g_lun = htoi(&optarg[4]);  /*LUN*/
                    g_addrtype = ADDR_IPMB;
                    if (optarg[6] == 's') {
                             g_addrtype = ADDR_SMI;  s1 = "SMI";
                    } else { g_addrtype = ADDR_IPMB; s1 = "IPMB"; }
                    fset_mc = 1;
                    ipmi_set_mc(g_bus,g_sa,g_lun,g_addrtype);
                    printf("Use MC at %s bus=%x sa=%x lun=%x\n",
                            s1,g_bus,g_sa,g_lun);
                    break;
          case 'f': nodefile = optarg; break; /* specific sensor tag */
          case 'l': loops = atoi(optarg); break; 
          case 'i': nsec = atoi(optarg); break;  /*interval in sec*/
          case 's': sdrfile = optarg; break; 
          case 't': mytag = optarg; break; /* specific sensor tag */
          case 'x': fdebug = 1;     break;  /* debug messages */
          case 'N':    /* nodename */
          case 'U':    /* remote username */
          case 'P':    /* remote password */
          case 'R':    /* remote password */
          case 'E':    /* get password from IPMI_PASSWORD environment var */
          case 'F':    /* force driver type */
          case 'T':    /* auth type */
          case 'V':    /* priv level */
          case 'Y':    /* prompt for remote password */
          case 'Z':    /* set local MC address */
                parse_lan_options(c,optarg,fdebug);
		if (c == 'F') strncpy(drvtyp,optarg,sizeof(drvtyp));
                break;
	  default:
                printf("Usage: %s [-filmstx -NUPREFTVY]\n", progname);
                printf(" where -x       show eXtra debug messages\n");
                printf("       -f File  use list of remote nodes from File\n");
                printf("       -i 10    interval for each loop in seconds\n");
                printf("       -l 10    loops sensor readings 10 times\n");
		printf("       -m002000 specific MC (bus 00,sa 20,lun 00)\n");
                printf("       -s File  loads SDRs from File\n");
                printf("       -t tag   search for 'tag' in SDRs\n");
		print_lan_opt_usage();
                exit(1);
      }
   /* Rather than parse_lan_options above, the set_lan_options function 
    * could be used if the program already knows the nodename, etc. */

 while(!done)
 {
   if (nodefile != NULL) {
      /* This will loop for each node in the file if -f was used.
       * The file should contain one line per node: 
       *    node1 user1 password1
       *    node2 user2 password2
       */
      if (fp == NULL) {
         fp = fopen(nodefile,"r");
         if (fp == NULL) {
            printf("Cannot open file %s\n",nodefile);
            ret = ERR_FILE_OPEN;
	    goto do_exit;
         }
         if (fdebug) printf("opened file %s ok\n",nodefile);
      }
      n = fscanf(fp,"%s %s %s", nod, usr, psw);
      if (fdebug) printf("fscanf returned %d \n",n);
      if (n == EOF || n <= 0) {
        fclose(fp);
	done = 1;
	goto do_exit;
      }
      printf("Using -N %s -U %s -P %s ...\n",nod,usr,psw);
      if (n > 0) parse_lan_options('N',nod,0);
      if (n > 1) parse_lan_options('U',usr,0);
      if (n > 2) parse_lan_options('P',psw,0);
      if (drvtyp != NULL) parse_lan_options('F',drvtyp,0);
   }

   ret = ipmi_getdeviceid(devrec,16,fdebug);
   if (ret != 0) {
	printf("Cannot do ipmi_getdeviceid, ret = %d\n",ret);
	goto do_exit;
   } else {  /*success*/
       uchar ipmi_maj, ipmi_min;
       ipmi_maj = devrec[4] & 0x0f;
       ipmi_min = devrec[4] >> 4;
       show_devid( devrec[2],  devrec[3], ipmi_maj, ipmi_min);
   }

   ret = get_chassis_status(chstatus,4);
   if (ret == 0) {
        if (chstatus[0] & 0x01) s1 = "on";
        else s1 = "off";
	printf("Chassis Status = %02x (%s)\n",chstatus[0],s1);
   }

#ifdef GET_FRU
   {
      uchar  *fru_data = NULL;
      printf("Getting FRU ...\n");
      ret = load_fru(0x20,0,0x07, &fru_data);
      if (ret == 0) 
	 ret = show_fru(0x20,0,0x07,fru_data);
      if (fru_data != NULL)
         free_fru(fru_data);
   }
#endif
#ifdef GET_SENSORS
   printf("Getting SDRs ...\n");
   if (sdrfile != NULL) {
      ret = get_sdr_file(sdrfile,&sdrlist);
   } else {
      ret = get_sdr_cache(&sdrlist);
   }
   printf("get_sdr_cache ret = %d\n",ret);
   if (ret == 0) {
	uchar sdrbuf[SDR_SZ];
	uchar reading[4];
	uchar snum = 0;
	ushort id;
	double val;
	char *typestr;
	char tag[17];
	int j;

	for (j = 0; j < loops; j++) 
	{
	 if (j > 0) {
	    printf("loop %d: wait %d seconds ...\n",j,nsec);
	    os_usleep(nsec,0);  /*sleep 5 sec between loops*/
	 }
	 id = 0;
	 /* Get sensor readings for all full SDRs */
         while(find_sdr_next(sdrbuf,sdrlist,id) == 0) {
           id = sdrbuf[0] + (sdrbuf[1] << 8); /*this SDR id*/
	   if (sdrbuf[3] != 0x01) continue; /*full SDR*/
	   strncpy(tag,&sdrbuf[48],16);
	   tag[16] = 0;
	   snum = sdrbuf[7];
           ret = GetSensorReading(snum, sdrbuf, reading);
	   if (ret == 0) { 
	      val = RawToFloat(reading[0], sdrbuf);
              typestr = get_unit_type( sdrbuf[20], sdrbuf[21], sdrbuf[22],0);
	   } else {
	      val = 0;
	      typestr = "na";
	      printf("%04x: get sensor %x reading ret = %d\n",id,snum,ret);
	   }
           printf("%04x: sensor %x %s  \treading = %.2f %s\n",
			id,snum,tag,val,typestr);
	   memset(sdrbuf,0,SDR_SZ);
         } /*end while*/
        } /*end for(loops) */

	/* Find a specific sensor by its tag and get a reading */
	if (mytag != NULL) {
	   /* see option -t, mytag = "System";  or "System Temp" */
	   memset(sdrbuf,0,SDR_SZ);
           ret = find_sdr_by_tag(sdrbuf, sdrlist, mytag, fdebug);
           printf("find_sdr_by_tag(%s) ret = %d\n",mytag,ret);
	   strncpy(tag,&sdrbuf[48],16); /*assume full sdr tag offset*/
	   tag[16] = 0;
	   snum = sdrbuf[7];
           ret = GetSensorReading(snum, sdrbuf, reading);
           printf("get sensor %x reading ret = %d\n",snum,ret);
	   if (sdrbuf[3] == 0x01) { /*full SDR*/
	      if (ret == 0) { 
	         val = RawToFloat(reading[0], sdrbuf);
                 typestr = get_unit_type(sdrbuf[20],sdrbuf[21],sdrbuf[22],0);
	      } else {
	         val = 0;
	         typestr = "na";
	      }
              printf("sensor %x %s reading = %.2f %s\n",snum,tag,val,typestr);
	   } else printf("sensor %x type %x reading = %02x\n",
			snum,sdrbuf[3],reading[2]);
	}

	free_sdr_cache(sdrlist);
   } /*endif sdr_cache is valid*/
#endif
   ipmi_close_();
   if (nodefile == NULL) done = 1;
  } /*end while not done */

do_exit:
   show_outcome(progname,ret);
   exit (ret);
}  /* end main()*/
コード例 #4
0
ファイル: cpu.c プロジェクト: CheezeCake/edison-u-boot
/* delay x useconds */
void __udelay(unsigned long usec)
{
	os_usleep(usec);
}