/arch/ppc/kernel/find_name.c

https://bitbucket.org/evzijst/gittest · C · 48 lines · 37 code · 6 blank · 5 comment · 7 complexity · 141d195a1407e99dffd53f184a1ed842 MD5 · raw file

  1. #include <stdio.h>
  2. #include <asm/page.h>
  3. #include <sys/mman.h>
  4. #include <strings.h>
  5. /*
  6. * Finds a given address in the System.map and prints it out
  7. * with its neighbors. -- Cort
  8. */
  9. int main(int argc, char **argv)
  10. {
  11. unsigned long addr, cmp, i;
  12. FILE *f;
  13. char s[256], last[256];
  14. if ( argc < 2 )
  15. {
  16. fprintf(stderr, "Usage: %s <address>\n", argv[0]);
  17. return -1;
  18. }
  19. for ( i = 1 ; argv[i] ; i++ )
  20. {
  21. sscanf( argv[i], "%0lx", &addr );
  22. /* adjust if addr is relative to kernelbase */
  23. if ( addr < PAGE_OFFSET )
  24. addr += PAGE_OFFSET;
  25. if ( (f = fopen( "System.map", "r" )) == NULL )
  26. {
  27. perror("fopen()\n");
  28. exit(-1);
  29. }
  30. while ( !feof(f) )
  31. {
  32. fgets(s, 255 , f);
  33. sscanf( s, "%0lx", &cmp );
  34. if ( addr < cmp )
  35. break;
  36. strcpy( last, s);
  37. }
  38. printf( "%s%s", last, s );
  39. }
  40. fclose(f);
  41. return 0;
  42. }