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

VxWorks

开发平台:

C/C++

  1. /* symTblLockLib.c - sym table locking mechanisms */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,05jan94,kdl  general cleanup.
  7. 01b,13dec93,dvs  made NOMANUAL
  8. 01a,06apr93,smb  created
  9. */
  10. /*
  11. DESCRIPTION
  12. This module provides functionality for synchronizing the use of 
  13. a symbol table created by symTblCreate(). 
  14. INCLUDE FILES: 
  15. SEE ALSO:
  16. NOMANUAL
  17. */
  18. #include "vxWorks.h"
  19. #include "semLib.h"
  20. #include "symLib.h"
  21. /*******************************************************************************
  22. *
  23. * symTblLock - lock a name table.
  24. *
  25. * This routine provides a mechanism for locking out a symbol table so that
  26. * it cannot be used by other tasks.
  27. *
  28. * RETURNS: OK, or ERROR if <symTblId> invalid
  29. *
  30. * NOMANUAL
  31. */
  32. STATUS symTblLock
  33.     (
  34.     SYMTAB_ID symTblId         /* ID of symbol table to lock */
  35.     )
  36.     {
  37.     if (OBJ_VERIFY (symTblId, symTblClassId) != OK)
  38.         return (ERROR);                         /* invalid symbol table ID */
  39.     semTake (&symTblId->symMutex, WAIT_FOREVER);
  40.     return (OK);
  41.     }
  42. /*******************************************************************************
  43. *
  44. * symTblUnlock - Unlock a name table.
  45. *
  46. * This routine unlocks a symbol table that has be locked via symTblLock().
  47. *
  48. * RETURNS: OK, or ERROR if <symTblId> invalid
  49. *
  50. * NOMANUAL
  51. */
  52. STATUS symTblUnlock
  53.     (
  54.     SYMTAB_ID symTblId         /* ID of symbol table to unlock */
  55.     )
  56.     {
  57.     if (OBJ_VERIFY (symTblId, symTblClassId) != OK)
  58.         return (ERROR);                         /* invalid symbol table ID */
  59.     semGive (&symTblId->symMutex);          /* release mutual exclusion */
  60.     return (OK);
  61.     }