find_name.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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