/* $Id: cpuid_test.c 1442 2005-08-02 20:36:21Z mipsator $ */

/* Public Domain */

/* CPU ID detection test */

#include <sys/utsname.h>
#include "../compat/pmk_sys_types.h"
#include <stdio.h>
#include <stdlib.h>

#include "../detect_cpu.h"
#include "../detect_cpu_asm.h"
#include "../hash.h"
#include "../parse.h"

#define PMKCPU_DATA	"../data/pmkcpu.dat"

int main(void) {
	char		*pstr;
	hkeys		*phk;
	htable		*pht;
	prsdata		*pdata;
	struct utsname	 utsname;
	unsigned int	 i;

	if (uname(&utsname) == -1) {
		printf("uname failed.\n");
		exit(EXIT_FAILURE);
	}

	pdata = parse_cpu_data(PMKCPU_DATA);
	if (pdata == NULL) {
		/* XXX msg ? */
		exit(EXIT_FAILURE);
	}

	pstr = check_cpu_arch(utsname.machine, pdata); /* XXX check ? */
	printf("arch = '%s'\n", pstr);

	pht = arch_wrapper(pdata, pstr);
	if (pht != NULL) {
		phk = hash_keys(pht);
		if (phk != NULL) {
			for(i = 0 ; i < phk->nkey ; i++) {
				pstr = hash_get(pht, phk->keys[i]);
				printf("%s = '%s'\n", phk->keys[i], pstr);
			}

			hash_free_hkeys(phk);
		}
		hash_destroy(pht);
	}

	prsdata_destroy(pdata);


	return(0);
}



syntax highlighted by Code2HTML, v. 0.9.1