bootLoadLib.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* bootLoadLib.c - UNIX object module boot loader */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 01b,18jul92,smb  Changed errno.h to errnoLib.h.
  8. 01a,01jun92,ajm  written: some culled from old loadLib
  9. */
  10. /*
  11. DESCRIPTION
  12. This library provides a generic bootstrap object module loading facility.  Any
  13. supported format files may be loaded into memory.
  14. Modules may be loaded from any I/O stream.
  15. EXAMPLE
  16. .CS
  17.     fdX = open ("/devX/objFile", O_RDONLY);
  18.     close (fdX);
  19. .CE
  20. This code fragment would load the object file "objFile" located on
  21. device "/devX/" into memory which would be allocated from the system
  22. memory pool.
  23. INCLUDE FILE: loadLib.h
  24. SEE ALSO: usrLib, symLib, memLib,
  25. .pG "Basic OS"
  26. */
  27. /* LINTLIBRARY */
  28. #include "vxWorks.h"
  29. #include "bootLoadLib.h"
  30. #include "errnoLib.h"
  31. /* define generic boot loader */
  32. FUNCPTR bootLoadRoutine = (FUNCPTR) NULL;
  33. /******************************************************************************
  34. *
  35. * bootLoadModule - bootstrap load an object module into memory
  36. *
  37. * This routine is the underlying routine to loadModuleAt().  This interface
  38. * allows specification of the the symbol table used to resolve undefined
  39. * external references and to which to add new symbols.
  40. *
  41. * RETURNS:
  42. * OK, or
  43. * ERROR if can't read file or not enough memory or illegal file format
  44. *
  45. * NOMANUAL
  46. */
  47. STATUS bootLoadModule 
  48.     (
  49.     FAST int fd,        /* fd from which to read module */
  50.     FUNCPTR *pEntry     /* entry point of module */
  51.     )
  52.     {
  53.     if (bootLoadRoutine == NULL)
  54. {
  55.         errnoSet (S_bootLoadLib_ROUTINE_NOT_INSTALLED);
  56. return (ERROR);
  57. }
  58.     else
  59. {
  60.         return ((bootLoadRoutine) (fd, pEntry));
  61. }
  62.     }