Beispiel #1
0
static int cmd_vcpu_exec(vmm_chardev_t *cdev, int argc, char **argv)
{
	int id = -1;
	int index = 0;

	if (argc > 3) {
		cmd_vcpu_usage(cdev);
		return VMM_EFAIL;
	}

	if (argc == 3) {
		id = vmm_str2int(argv[2], 10);
	}
	
	while (command[index].name) {
		if (vmm_strcmp(argv[1], command[index].name) == 0) {
			return command[index].function(cdev, id);
		}
		index++;
	}

	cmd_vcpu_usage(cdev);

	return VMM_EFAIL;
}
Beispiel #2
0
int cmd_ram_exec(vmm_chardev_t *cdev, int argc, char **argv)
{
	int colcnt;
	if (1 < argc) {
		if (vmm_strcmp(argv[1], "help") == 0) {
			cmd_ram_usage(cdev);
			return VMM_OK;
		} else if (vmm_strcmp(argv[1], "stats") == 0) {
			cmd_ram_stats(cdev);
			return VMM_OK;
		} else if (vmm_strcmp(argv[1], "bitmap") == 0) {
			if (2 < argc) {
				colcnt = vmm_str2int(argv[2], 10);
			} else {
				colcnt = 64;
			}
			cmd_ram_bitmap(cdev, colcnt);
			return VMM_OK;
		}
	}
	cmd_ram_usage(cdev);
	return VMM_EFAIL;
}
Beispiel #3
0
int cmd_rtcdev_set_time(struct vmm_chardev *cdev, const char * name,
			int targc, char **targv)
{
	int rc;
	char * s;
	struct vmm_rtc_time tm;
	struct vmm_rtcdev * rtc = vmm_rtcdev_find(name);

	if (!rtc) {
		vmm_cprintf(cdev, "Error: cannot find rtc %s\n", name);
		return VMM_EFAIL;
	}

	s = targv[0];
	rc = 0;
	tm.tm_hour = 0;
	tm.tm_min = 0;
	tm.tm_sec = 0;
	while (*s) {
		if (*s == ':') {
			rc++;
		} else if ('0' <= *s && *s <= '9') {
			switch(rc) {
			case 0:
				tm.tm_hour = tm.tm_hour * 10 + (*s - '0');
				break;
			case 1:
				tm.tm_min = tm.tm_min * 10 + (*s - '0');
				break;
			case 2:
				tm.tm_sec = tm.tm_sec * 10 + (*s - '0');
				break;
			default:
				break;
			};
		}
		s++;
	}
	rc = 0;
	tm.tm_mday = vmm_str2int(targv[1], 10);
	vmm_str2lower(targv[2]);
	if (vmm_strcmp(targv[2], "jan") == 0) {
		tm.tm_mon = 0;
	} else if (vmm_strcmp(targv[2], "feb") == 0) {
		tm.tm_mon = 1;
	} else if (vmm_strcmp(targv[2], "mar") == 0) {
		tm.tm_mon = 2;
	} else if (vmm_strcmp(targv[2], "apr") == 0) {
		tm.tm_mon = 3;
	} else if (vmm_strcmp(targv[2], "may") == 0) {
		tm.tm_mon = 4;
	} else if (vmm_strcmp(targv[2], "jun") == 0) {
		tm.tm_mon = 5;
	} else if (vmm_strcmp(targv[2], "jul") == 0) {
		tm.tm_mon = 6;
	} else if (vmm_strcmp(targv[2], "aug") == 0) {
		tm.tm_mon = 7;
	} else if (vmm_strcmp(targv[2], "sep") == 0) {
		tm.tm_mon = 8;
	} else if (vmm_strcmp(targv[2], "oct") == 0) {
		tm.tm_mon = 9;
	} else if (vmm_strcmp(targv[2], "nov") == 0) {
		tm.tm_mon = 10;
	} else if (vmm_strcmp(targv[2], "dec") == 0) {
		tm.tm_mon = 11;
	} else {
		tm.tm_mon = vmm_str2int(targv[2], 10);
	}
	tm.tm_year = vmm_str2int(targv[3], 10) - 1900;

	if (!vmm_rtc_valid_tm(&tm)) {
		vmm_cprintf(cdev, "Error: invalid date-time\n");
		return VMM_EFAIL;
	}

	rc = vmm_rtcdev_set_time(rtc, &tm);
	if (rc) {
		vmm_cprintf(cdev, "Error: set_time failed for rtc %s\n", name);
		return rc;
	}

	return VMM_OK;
}