On 2 August 2016 at 11:20, <vijay.kil...@gmail.com> wrote: > +long int qemu_read_cpuid_info(void)
Don't use "long" here, it might be 32 or 64 bits. The kernel ABI for the /sys/ file we're reading says it is a 64-bit value, so uint64_t is what you want. > +{ > + FILE *fp; > + char *buf; > + long int midr = 0; > +#define BUF_SIZE 32 > + > + fp = fopen("/sys/devices/system/cpu/cpu0/regs/identification/midr_el1", > + "r"); > + if (!fp) { > + return 0; > + } > + > + buf = g_malloc0(BUF_SIZE); > + if (!buf) { > + fclose(fp); > + return 0; > + } > + > + if (buf != fgets(buf, BUF_SIZE - 1, fp)) { > + goto out; > + } g_file_get_contents() is probably easier than manually opening the file and reading it into an allocated buffer. > + > + if (qemu_strtol(buf, NULL, 0, &midr) < 0) { qemu_strtoull(). > + goto out; > + } > + > +out: > + g_free(buf); > + fclose(fp); > + > + return midr; > +} > +#endif > -- > 1.7.9.5 > thanks -- PMM