home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / a / bin / modules-.2 / modules- / modules-1.2.8 / depmod / main.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-30  |  1.0 KB  |  61 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "link.h"
  5.  
  6. extern int depmod_main(int, char **);
  7. extern int modprobe_main(int, char **);
  8. int debugmode=0;
  9.  
  10. int
  11. main(int argc, char **argv)
  12. {
  13.     char *progname;
  14.  
  15.     if ((progname = strrchr(argv[0], '/')))
  16.         ++progname;
  17.     else
  18.         progname = argv[0];
  19.  
  20.     if (strcmp(progname, "depmod") == 0)
  21.         return depmod_main(argc, argv);
  22.     else
  23.         return modprobe_main(argc, argv);
  24. }
  25.  
  26. /*
  27.  * Get kernel symbol table(s).
  28.  *
  29.  * Bjorn Ekwall <bj0rn@blox.se> in 1994 (C)
  30.  */
  31. #include "kernelsyms.h"
  32.  
  33. extern "C" syscall(int, ...);
  34.  
  35. static int get_kernel_syms(struct kernel_sym *buffer)
  36. {
  37.     return syscall( __NR_get_kernel_syms, buffer);
  38. }
  39.  
  40. struct kernel_sym *ksymtab = NULL;
  41. int nksyms;
  42.  
  43. void
  44. load_kernel_symbols(void)
  45. {
  46.     nksyms = get_kernel_syms(NULL);
  47.  
  48.     if (nksyms < 0) {
  49.         depmod_error("get_kernel_sys failed: Cannot find Kernel symbols!");
  50.         exit(2);
  51.     }
  52.  
  53.     if (ksymtab)
  54.         free(ksymtab);
  55.  
  56.     if (nksyms) {
  57.         ksymtab = (struct kernel_sym *) malloc(nksyms * sizeof *ksymtab);
  58.         get_kernel_syms(ksymtab);
  59.     }
  60. }
  61.