예제 #1
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_mountlist(gboolean allfs)
{
  glibtop_mountlist buf;
  glibtop_mountentry *entries;
  size_t i;

  entries = glibtop_get_mountlist(&buf, allfs);

  HEADER_PPRINT(glibtop_get_mountlist);
  printf("glibtop_get_mountlist (allfs = %d)\n", allfs);
  PPRINT(flags, "%#llx");
  PPRINT(number, "%llu");
  PPRINT(total, "%llu");
  PPRINT(size, "%llu");

  printf("\t%4llu B entries[%llu] = \n\t\t{\n", buf.total, buf.number);

  for(i = 0; i < buf.number; ++i)
    {
      printf("\t\t .%lu = { .dev = %#llx,"
	     " .devname = \"%s\","
	     " .mountir = \"%s\","
	     " .type = \"%s\" }\n",
	     (unsigned long) i, entries[i].dev,
	     entries[i].devname,
	     entries[i].mountdir,
	     entries[i].type);
    }

  printf("\t\t}\n");
  FOOTER_PPRINT();

  g_free(entries);
}
예제 #2
0
파일: arp.c 프로젝트: rohsaini/mkunity
int
arp_request(u32bits dst)
{
	unsigned waiting;

#ifdef	ARPDEBUG
	PPRINT(("Start arp_request(0x%x)\n", dst));
#endif
	arp_waiting = dst;
	(void)arp_output();
	settimeout(ARP_RETRANSMIT);
	waiting = ARP_RETRANSMIT;

	while (arp_waiting != 0 && waiting <= 60000) {
		if (isatimeout()) {
#ifdef	ARPDEBUG
			PPRINT(("ARP request sent\n"));
#endif
			arp_output();
			settimeout(ARP_RETRANSMIT);
			waiting += ARP_RETRANSMIT;
		}
		if (is_intr_char())
			return (NETBOOT_ABORT);
		(*dlink.dl_input)(arp_buffer, sizeof(arp_buffer));
	}
	return (arp_waiting == 0 ? NETBOOT_SUCCESS : NETBOOT_ERROR);
}
예제 #3
0
파일: botV02.c 프로젝트: M-a-z/MazBotV4
int main(void)
{
	DPRINT("Initing startlevel 1");
	if(0!=init_startlevel1())
	{
		PPRINT("Failed to init startlevel 1");
	}
	DPRINT("Initing startlevel 2");
	if(0!=init_startlevel2())
	{
		PPRINT("Failed to init startlevel 2");
	}
	DPRINT("Initing startlevel 3");
	if(0!=init_startlevel3())
	{
		PPRINT("Failed to init startlevel 3");
	}
	DPRINT("Initing startlevel 4");
	if(0!=init_startlevel4())
	{
		PPRINT("Failed to init startlevel 4");
	}
	DPRINT("Initing startlevel 5");
	if(0!=init_startlevel5())
	{
		PPRINT("Failed to init startlevel 5");
	}
	DPRINT("Oh Joy, I would be Up now!");

    getoonbaby(configGetServeramnt());

	deinit_startlevel5();
	return 0;
}
예제 #4
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_uptime(void)
{
  glibtop_uptime buf;

  glibtop_get_uptime(&buf);

  HEADER_PPRINT(glibtop_get_uptime);
  PPRINT(flags, "%#llx");
  PPRINT(uptime, "%f");
  PPRINT(idletime, "%f");
  PPRINT(boot_time, "%llu");
  FOOTER_PPRINT();
}
예제 #5
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_loadavg(void)
{
  glibtop_loadavg buf;

  glibtop_get_loadavg(&buf);

  HEADER_PPRINT(glibtop_get_loadavg);
  PPRINT(flags, "%#llx");
  PPRINT_ARRAY(loadavg, 3, "%f");
  PPRINT(nr_running, "%llu");
  PPRINT(nr_tasks, "%llu");
  PPRINT(last_pid, "%llu");
  FOOTER_PPRINT();
}
예제 #6
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_netload(const char *iface)
{
  glibtop_netload buf;

  glibtop_get_netload(&buf, iface);

  HEADER_PPRINT(glibtop_get_netload);
  printf("glibtop_get_netload (iface = \"%s\")\n", iface);
  PPRINT(flags, "%#llx");
  FOOTER_PPRINT();
}
예제 #7
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_proc_affinity(pid_t pid)
{
  glibtop_proc_affinity buf;
  guint32 i;
  guint16* cpus;

  cpus = glibtop_get_proc_affinity(&buf, pid);

  HEADER_PPRINT(glibtop_get_proc_affinity);
  PPRINT(flags, "%#llx");
  PPRINT(number, "%u");
  PPRINT(all, "%d");

  printf("\taffinity=");
  for (i = 0; i < buf.number; i++) {
    printf("%d, ", cpus[i]);
  }
  putchar('\n');

  FOOTER_PPRINT();
}
예제 #8
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_mem(void)
{
  glibtop_mem buf;

  glibtop_get_mem(&buf);

  HEADER_PPRINT(glibtop_get_mem);
  PPRINT(flags, "%#llx");
  PPRINT(total, "%llu");
  PPRINT(used, "%llu");
  PPRINT(free, "%llu");
  PPRINT(shared, "%llu");
  PPRINT(buffer, "%llu");
  PPRINT(cached, "%llu");
  PPRINT(user, "%llu");
  PPRINT(locked, "%llu");
  FOOTER_PPRINT();
}
예제 #9
0
Sstartuplock *initstuplock()
{
	Sstartuplock *_this=malloc(sizeof(Sstartuplock));
	if(NULL==_this)
	{
		PPRINT("Malloc Failed at *initstuplock()");
		return NULL;
	}
	_this->lockval=MbotAtomic32Init();
	if(NULL==_this->lockval)
	{
		PPRINT("Malloc Failed at *initstuplock()");
		free(_this);
		return NULL;
	}
	_this->init=&initstuplock;
	_this->uninit=&uninitstuplock;
	_this->lock=&lockstuplock;
	_this->release=&releasestuplock;
	_this->islocked=&islockedstuplock;
	return _this;
}
예제 #10
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_fsusage(const char *mountpoint)
{
  glibtop_fsusage buf;

  glibtop_get_fsusage(&buf, mountpoint);

  HEADER_PPRINT(glibtop_get_fsusage);
  printf("pprint_get_fsusage (mountpoint = \"%s\"\n", mountpoint);
  PPRINT(flags, "%#llx");
  PPRINT(blocks, "%llu");
  PPRINT(bfree, "%llu");
  PPRINT(bavail, "%llu");
  PPRINT(files, "%llu");
  PPRINT(ffree, "%llu");
  PPRINT(block_size, "%u");
  PPRINT(read, "%llu");
  PPRINT(write, "%llu");
  FOOTER_PPRINT();
}
예제 #11
0
int callbacklist_init(SServerCallbackList **lpp,ServerCallbackF cb,void *userptr)
{
	SServerCallbackList *lp;
	lp=calloc(1,sizeof(SServerCallbackList));
	*lpp=lp;
	if(NULL==lp)
	{
		PPRINT("Malloc failed when Initing callbacklist! Out of mem??");
		return -1;
	}
	lp->args.userdataptr=userptr;
	lp->callback=cb;
	lp->next=NULL;
	return 0;
}
예제 #12
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_msg_limits(void)
{
  glibtop_msg_limits buf;

  glibtop_get_msg_limits(&buf);

  HEADER_PPRINT(glibtop_get_msg_limits);
  PPRINT(flags, "%#llx");
  PPRINT(msgpool, "%llu");
  PPRINT(msgmap, "%llu");
  PPRINT(msgmax, "%llu");
  PPRINT(msgmnb, "%llu");
  PPRINT(msgmni, "%llu");
  PPRINT(msgssz, "%llu");
  PPRINT(msgtql, "%llu");
  FOOTER_PPRINT();
}
예제 #13
0
int callbacklist_add(SServerCallbackList *list,ServerCallbackF cb,void *userptr)
{
	while(NULL!=list->next)
	{
		list=list->next;
	}
	list->next=calloc(1,sizeof(SServerCallbackList));
	if(NULL==list->next)
	{
		PPRINT("Malloc failed when adding callback to list! Out of mem??");
		return -1;
	}
	list->next->callback=cb;
    list->next->args.userdataptr=userptr;
	list->next=NULL;
	return 0;
}
예제 #14
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_proc_mem(pid_t pid)
{
  glibtop_proc_mem buf;

  glibtop_get_proc_mem(&buf, pid);

  HEADER_PPRINT(glibtop_get_proc_mem);
  PPRINT(flags, "%#llx");
  PPRINT(size, "%llu");
  PPRINT(vsize, "%llu");
  PPRINT(resident, "%llu");
  PPRINT(share, "%llu");
  PPRINT(rss, "%llu");
  PPRINT(rss_rlim, "%llu");
  FOOTER_PPRINT();
}
예제 #15
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_proc_kernel(pid_t pid)
{
  glibtop_proc_kernel buf;

  glibtop_get_proc_kernel(&buf, pid);

  HEADER_PPRINT(glibtop_get_proc_kernel);
  PPRINT(flags, "%#llx");
  PPRINT(k_flags, "%llu");
  PPRINT(min_flt, "%llu");
  PPRINT(maj_flt, "%llu");
  PPRINT(cmin_flt, "%llu");
  PPRINT(cmaj_flt, "%llu");
  FOOTER_PPRINT();
}
예제 #16
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_swap(void)
{
  glibtop_swap buf;

  glibtop_get_swap(&buf);

  HEADER_PPRINT(glibtop_get_swap);
  PPRINT(flags, "%#llx");
  PPRINT(total, "%llu");
  PPRINT(used, "%llu");
  PPRINT(free, "%llu");
  PPRINT(pagein, "%llu");
  PPRINT(pageout, "%llu");
  FOOTER_PPRINT();
}
예제 #17
0
파일: arp.c 프로젝트: rohsaini/mkunity
static void
arp_output()
{
	struct frame_arp *ap;
	u8bits *p;
	unsigned i;

#ifdef	ARPDEBUG
	PPRINT(("Start arp_output()\n"));
#endif
	ap = (struct frame_arp *)&arp_buffer[dlink.dl_hlen];
	ap->arp_hrd = htons(dlink.dl_type);
	ap->arp_pro = htons(ETHERNET_TYPE_IP);
	ap->arp_hln = dlink.dl_len;
	ap->arp_pln = sizeof (u32bits);
	ap->arp_op = htons(ARPOP_REQUEST);
	p = (u8bits *)(ap + 1);
	for (i = 0; i < dlink.dl_len; i++)
		*p++ = dlink.dl_laddr[i];
	*p++ = (udpip_laddr >> 24) & 0xFF;
	*p++ = (udpip_laddr >> 16) & 0xFF;
	*p++ = (udpip_laddr >> 8) & 0xFF;
	*p++ = udpip_laddr & 0xFF;
	for (i = 0; i < dlink.dl_len; i++)
		*p++ = '\0';
	*p++ = (arp_waiting >> 24) & 0xFF;
	*p++ = (arp_waiting >> 16) & 0xFF;
	*p++ = (arp_waiting >> 8) & 0xFF;
	*p++ = arp_waiting & 0xFF;

	switch (dlink.dl_type) {
	case ARPHRD_ETHERNET:
		ether_output(arp_buffer, ARP_BUFLEN(ap->arp_hln), ether_broadcast, ETHERNET_TYPE_ARP);
		break;
	default:
		printf("Unknown dlink type 0x%x\n", dlink.dl_type);
		break;
	}
}
예제 #18
0
파일: arp.c 프로젝트: rohsaini/mkunity
void
arp_input(void *addr,
	  unsigned len)
{
	struct frame_arp *ap;
	struct frame_arp *ap1;
	unsigned i;
	u8bits *p;
	u32bits ip;

#ifdef	ARPDEBUG
	PPRINT(("Start arp_input(0x%x, 0x%x)\n", addr, len));
#endif

	ap = (struct frame_arp *)addr;
	if (ntohs(ap->arp_hrd) != dlink.dl_type ||
	    ntohs(ap->arp_pro) != ETHERNET_TYPE_IP ||
	    ap->arp_hln != dlink.dl_len ||
	    ap->arp_pln != sizeof (u32bits) ||
	    len < sizeof (struct frame_arp) + 2 * (ap->arp_hln + sizeof (u32bits))) {
#ifdef	ARPDEBUG
		PPRINT(("arp_input: Bad type\n"));
#endif
		return;
	}
	ap->arp_op = ntohs(ap->arp_op);
	switch (ap->arp_op) {
	case ARPOP_REQUEST:
		p = (u8bits *)(ap + 1) + 2 * ap->arp_hln + ap->arp_pln;
		ip = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
		if (udpip_laddr != ip) {
#ifdef	ARPDEBUG
			PPRINT(("arp_input: Not for us\n"));
#endif
			return;
		}

		ap1 = (struct frame_arp *)&arp_buffer[dlink.dl_hlen];
		ap1->arp_hrd = htons(dlink.dl_type);
		ap1->arp_pro = htons(ETHERNET_TYPE_IP);
		ap1->arp_hln = dlink.dl_len;
		ap1->arp_pln = sizeof (u32bits);
		ap1->arp_op = htons(ARPOP_REPLY);
		p = (u8bits *)(ap1 + 1);
		for (i = 0; i < dlink.dl_len; i++)
			*p++ = dlink.dl_laddr[i];
		*p++ = (udpip_laddr >> 24) & 0xFF;
		*p++ = (udpip_laddr >> 16) & 0xFF;
		*p++ = (udpip_laddr >> 8) & 0xFF;
		*p++ = udpip_laddr & 0xFF;
		for (i = 0; i < dlink.dl_len + sizeof (u32bits); i++)
			*p++ = ((u8bits *)(ap + 1))[i];
		len = sizeof (struct frame_arp) + 2 * (dlink.dl_len + 4);
		switch (dlink.dl_type) {
		case ARPHRD_ETHERNET:
			(void)ether_output(arp_buffer, ARP_BUFLEN(ap1->arp_hln),
					   (u8bits *)(ap + 1), ETHERNET_TYPE_ARP);
			break;
		default:
			printf("Unknown dlink type 0x%x\n", dlink.dl_type);
			break;
		}
		return;

	case ARPOP_REPLY:
		if (arp_waiting != 0) {
			p = (u8bits *)(ap + 1) + ap->arp_hln;
			ip = 0;
			for (i = 0; i < sizeof (u32bits); i++)
				ip = (ip << 8) | *p++;
			if (arp_waiting == ip) {
				arp_waiting = 0;
				p = (u8bits *)(ap + 1);
				for (i = 0; i < ap->arp_hln; i++) {
					dlink.dl_raddr[i] = *p++;
				}
				break;
			}
		}
#ifdef	ARPDEBUG
		PPRINT(("arp_input: Bad sender (%x)\n", ap + 1));
#endif
		break;

	default:
#ifdef	ARPDEBUG
		PPRINT(("arp_input: Bad operation (%x)\n", ap->arp_op));
#endif
		break;
	}
}
void doHough(std::vector<payload> readings, int lineThresh, int pointThresh)
{
    std::vector<float> maxVal(2), res(2);
    std::vector<float> minVal(2);
    std::vector<float> vote(2);
    std::vector<float> voteLoc(2);

    /**
     * LINE SPACE
     * RHO: The perpendicular distance of the line from origin
     * THETA: Angle the perpendicular from the origin to the line
     *        makes with +X axis
     *
     * beta: Angular error of ultrasonic sensor, -15deg < beta < 15deg
     */
    maxVal[RHO] = 15000.0F; // in millimetres
    maxVal[THETA] = (float) 2 * M_PI; // in radians
    res[RHO] = 100;
    res[THETA] = M_PI / 180 * 5;

    houghSpace linespace (res, maxVal);

    for (auto &p: readings) {
        for (float beta = -M_PI/12; beta <= M_PI/12; beta += M_PI/180) {
            // Refer to the paper for the derivation
            vote[THETA] = p.loc.theta + beta;
            vote[THETA] = fmod(vote[THETA], 2 * M_PI);
            if (vote[THETA] < 0) {
                vote[THETA] += 2 * M_PI;
            }
            vote[RHO] = std::abs(p.reading + (p.loc.x * cosf(vote[THETA]))
                    + (p.loc.y * sinf(vote[THETA])));
            voteLoc[X] = p.loc.x + p.reading * cosf(vote[THETA]);
            voteLoc[Y] = p.loc.y + p.reading * sinf(vote[THETA]);
            assert(vote[RHO] <= maxVal[RHO]);
            assert(vote[THETA] <= maxVal[THETA]);
            PPRINT(vote[RHO]);
            PPRINT(vote[THETA]);
            PPRINT(voteLoc[X]);
            PPRINT(voteLoc[Y]);
            linespace.addVote(vote, voteLoc);
        }
    }
    auto lineF (linespace.getMaxima(lineThresh));
    std::ofstream lout ("lines.txt");
    for (auto &p: lineF) {
        for (auto &q: p.first) {
            lout << q << " ";
        }
        lout << std::endl;
    }
    std::ofstream lsout("line_segments.txt");
    auto lineSegments = getLineSegments(lineF);
    for (auto &ls : lineSegments) {
        lsout   << ls.first.first   << ' ' //X1
                << ls.first.second  << ' ' //Y1
                << ls.second.first  << ' ' //X2
                << ls.second.second << ' ' //Y2
                << std::endl;
    }
}
예제 #20
0
void doHough(std::vector<payload> readings, int lineThresh, int pointThresh)
{
    std::vector<float> maxVal(2), res(2);
    std::vector<float> minVal(2);
    std::vector<float> vote(2);

    /**
     * LINE SPACE
     * RHO: The perpendicular distance of the line from origin
     * THETA: Angle the perpendicular from the origin to the line
     *        makes with +X axis
     *
     * beta: Angular error of ultrasonic sensor, -15deg < beta < 15deg
     */
    maxVal[RHO] = 15000.0F; // in millimetres
    maxVal[THETA] = (float) 2 * M_PI; // in radians
    res[RHO] = 100;
    res[THETA] = M_PI / 180 * 5;

    houghSpace linespace (res, maxVal);

    for (auto &p: readings) {
        for (float beta = -M_PI/12; beta <= M_PI/12; beta += M_PI/180) {
            // Refer to the paper for the derivation
            vote[THETA] = p.loc.theta + beta;
            vote[THETA] = fmod(vote[THETA], 2 * M_PI);
            if (vote[THETA] < 0) {
                vote[THETA] += 2 * M_PI;
            }
            vote[RHO] = std::abs(p.reading + (p.loc.x * cosf(vote[THETA]))
                                  + (p.loc.y * sinf(vote[THETA])));
            assert(vote[RHO] <= maxVal[RHO]);
            assert(vote[THETA] <= maxVal[THETA]);
            PPRINT(vote[RHO]);
            PPRINT(vote[THETA]);
            linespace.addVote(vote);
        }
    }
    std::vector< std::vector<float> > lineF (linespace.getMaxima(lineThresh));
    std::ofstream lout ("lines.txt");
    for (auto &p: lineF) {
        for (auto &q: p) {
            lout << q << " ";
        }
        lout << std::endl;
    }
    //std::cout << linespace;
    /**
     * POINT SPACE
     * X: X-coordinate of point
     * Y: Y-coordinate of point
     *
     * beta: Angular error of ultrasonic sensor, -15deg < beta < 15deg
     */
    maxVal[X] = 15000.0F; // in millimetres
    maxVal[Y] = 15000.0F; // in millimetres
    minVal[X] = -15000.0F;
    minVal[Y] = -15000.0F;
    res[X] = 10;
    res[Y] = 10;

    houghSpace pointspace (res, maxVal, minVal);

    for (auto &p: readings) {
        for (float beta = -M_PI/12; beta <= M_PI/12; beta += M_PI/180) {
            vote[X] = p.loc.x + (p.reading * cosf(p.loc.theta + beta));
            vote[Y] = p.loc.y + (p.reading * sinf(p.loc.theta + beta));
            assert(vote[X] <= maxVal[X]);
            assert(vote[Y] <= maxVal[Y]);
            PPRINT(vote[X]);
            PPRINT(vote[Y]);
            pointspace.addVote(vote);
        }
    }
    std::vector< std::vector<float> > pointF (pointspace.getMaxima(pointThresh));
    std::ofstream pout ("points.txt");
    for (auto &p: pointF) {
        for (auto &q: p) {
            pout << q << " ";
        }
        pout << std::endl;
    }
  //std::cout << pointspace;
}
예제 #21
0
파일: pprint.c 프로젝트: Prince781/libgtop
static void pprint_get_cpu(void)
{
  glibtop_cpu buf;

  glibtop_get_cpu(&buf);

  HEADER_PPRINT(glibtop_get_cpu);
  PPRINT(flags, "%#llx");
  PPRINT(total, "%llu");
  PPRINT(user, "%llu");
  PPRINT(nice, "%llu");
  PPRINT(sys, "%llu");
  PPRINT(idle, "%llu");
  PPRINT(iowait, "%llu");
  PPRINT(irq, "%llu");
  PPRINT(softirq, "%llu");
  PPRINT(frequency, "%llu");
  PPRINT_ARRAY(xcpu_total, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_user, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_nice, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_sys, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_idle, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_iowait, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_irq, GLIBTOP_NCPU, "%llu");
  PPRINT_ARRAY(xcpu_softirq, GLIBTOP_NCPU, "%llu");
  PPRINT(xcpu_flags, "%llx");
  FOOTER_PPRINT();
}