Beispiel #1
0
int main(int argc, char** argv) {
	if (!cpuinfo_initialize()) {
		fprintf(stderr, "failed to initialize CPU information\n");
		exit(EXIT_FAILURE);
	}
	#ifdef __ANDROID__
		printf("SoC name: %s\n", cpuinfo_get_package(0)->name);
	#else
		printf("Packages:\n");
		for (uint32_t i = 0; i < cpuinfo_get_packages_count(); i++) {
			printf("\t%"PRIu32": %s\n", i, cpuinfo_get_package(i)->name);
		}
	#endif
	printf("Cores:\n");
	for (uint32_t i = 0; i < cpuinfo_get_cores_count(); i++) {
		const struct cpuinfo_core* core = cpuinfo_get_core(i);
		if (core->processor_count == 1) {
			printf("\t%"PRIu32": 1 processor (%"PRIu32")", i, core->processor_start);
		} else {
			printf("\t%"PRIu32": %"PRIu32" processors (%"PRIu32"-%"PRIu32")",
				i, core->processor_count, core->processor_start, core->processor_start + core->processor_count - 1);
		}
		const char* vendor_string = vendor_to_string(core->vendor);
		const char* uarch_string = uarch_to_string(core->uarch);
		if (vendor_string == NULL) {
			printf(", vendor 0x%08"PRIx32" uarch 0x%08"PRIx32"\n",
				(uint32_t) core->vendor, (uint32_t) core->uarch);
		}
		else if (uarch_string == NULL) {
			printf(", %s uarch 0x%08"PRIx32"\n",
				vendor_string, (uint32_t) core->uarch);
		}
		else {
			printf(", %s %s\n", vendor_string, uarch_string);
		}
	}
	printf("Logical processors:\n");
	for (uint32_t i = 0; i < cpuinfo_get_processors_count(); i++) {
		const struct cpuinfo_processor* processor = cpuinfo_get_processor(i);
		#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
			printf("\t%"PRIu32": APIC ID 0x%08"PRIx32"\n", i, processor->apic_id);
		#else
			printf("\t%"PRIu32"\n", i);
		#endif
	}
}
Beispiel #2
0
void shell::start()
{
	cout<<"Starting shell : Type help for available commands\n";
	char *cmd=new char[128]  ;
	while(1)
	{	
		//memset(cmd,0,128);
		cout.SetColour(GREEN,BLACK,0);	
		cout<<"NanOS-#>";
		cout.SetColour(WHITE,BLACK,0);
		cin>>cmd;
		//cout<<" \nCommand : "<<cmd<<"\n";
		if(String::strncmp((const char*)cmd,"about",5)==0)
			about();
		else if(String::strncmp((const char*)cmd,"help",4)==0)
			help();
		else if(String::strncmp((const char*)cmd,"clear",5)==0)
			cout.clear();
		else if(String::strncmp((const char*)cmd,"date",4)==0)
			get_cmos_date_time();
		else if(String::strncmp((const char*)cmd,"hello",5)==0)
			cout<<"Hi, how do you do???"<<"\n";
		else if(String::strncmp((const char*)cmd,"cpuinfo",7)==0)
			cpuinfo();
		else if(String::strncmp((const char*)cmd,"meminfo",7)==0)
			meminfo();
		else if(String::strncmp((const char*)cmd,"pci",3)==0)
		{
			pci_bus *sys_pci=pci_bus::Instance();
			sys_pci->list_dev();
		}
		else if(String::strncmp((const char*)cmd,"devclass",8)==0)
		{
			pci_bus *sys_pci=pci_bus::Instance();
			unsigned short x=atoi(cmd+9);
			pci_dev *device=sys_pci->get_dev_by_class(x);
			int i=0;
			while(device)
			{
				cout.flags(hex|showbase);
				cout<<device->bus<<":"<<device->dev<<":"<<device->func<<":";
				cout<<vendor_to_string(device->common->vendor_id)<<":"<<vendor_device_to_string(device->common->vendor_id,device->common->device_id)<<":";
				cout<<class_to_string(device->common->classcode,device->common->subclass)<<":";
				cout<<(int)device->common->classcode<<":"<<(int)device->common->subclass<<":";
				cout<<(int)(device->common->Prog_if)<<":"<<(int)device->common->header_type<<"\n";
				i++;
				device=device->next;
			}
			cout.flags(dec);
			cout<<"Total devices="<<i<<"\n";
		}	
		else if(String::strncmp((const char*)cmd,"bootdev",7)==0)
			{
				extern char *boot_dev;
				cout<<(char *)boot_dev<<"\n";
			}
		
		else if(String::strncmp((const char*)cmd,"tasks",5)==0)
			{
				all_tasks();	
			}
		else if(String::strncmp((const char*)cmd,"ide",3)==0)
			{
				display_slot_info();	
			}
		else if(String::strncmp((const char*)cmd,"hdinfo",6)==0)
		{
			for(int i=0;i<4;i++)
			//if(disks[i])
			{
				//disks[i]->disk_info();
			}
		}
		else if(String::strncmp((const char*)cmd,"sysdriveinfo",12)==0)
		{
			display_sysdrive_info();
		}
		else if(String::strcmp((const char*)cmd, "")==0);
		
		else
			cout<<"Unknown Command\n For available commands type help\n";
		
	}
}