On Sun, Jun 9, 2013 at 10:24 AM, Satya Prakash Prasad <satyaprakash.prasad@xxxxxxxxx> wrote: > I am trying to write a code to read BIOS details. Below is the program but I > believe that I am not reading BIOS details. Can anyone please correct me in > my understanding: > > Note I found that /proc/ioports gives the I/O ports details like: > > [root@ioport]# cat /proc/ioports > 0000-001f : dma1 > 0020-0021 : pic1 > 0040-0043 : timer0 > 0050-0053 : timer1 > ........and so on.................. > > > > #include <stdio.h> > #include <stdlib.h> > #include <unistd.h> > #include <sys/io.h> > #include <ctype.h> > #include <string.h> > > main(int argc, char *argv[]) > { > unsigned char c; > if(argc != 2) { > printf("-1. Invalid args : usage %s start-end address\n", > argv[0]); > exit(-1); > } > char * temp = argv[1]; > while(*temp != '\0' && (isxdigit(*temp) || *temp=='-')) > temp++; > char * delim = strchr(argv[1], '-'); > if(*temp != '\0' || !delim ) { > printf("-2. Invalid args : usage %s start-end address\n", > argv[0]); > exit(-2); > } > *delim = '\0'; > int start = (int)strtol(argv[1], '\0', 16), end = > (int)strtol(delim+1, '\0', 16), index = 0; > if(start < 0 || end <= 0 ) { > printf("-3. Invalid args : usage %s start-end address\n", > argv[0]); > exit(-3); > } > if(iopl(3) == -1) { > printf("-4. Unable to set privilege level\n"); > exit(-4); > } > if(ioperm(start, end - start, 1) == -1) { > printf("-5. Unable to set access permission bits\n"); > exit(-5); > } > for(index = start ; index <= end ; index ++) > { > c = inb(index); > printf("%X", c); > } > ioperm(start, end - start, 0); > printf("\n"); > } > > > So my program dumps the data in-between the ports assigned for devices: > > [root@ioport]# ./a.out 0000-001f > 01000007D0FFFFFFFFFFFFF0100000 > 7D0FFFFFFFFFFFFF > > Please let me know if I am in the right path or not and guide me > appropriately. > Please take a look at source code for dmidecode. I am a newbie myself, so I do not know much beyond that :-) _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies