~n-muench/ubuntu/precise/open-vm-tools/open-vm-tools.raring-precise.backport

« back to all changes in this revision

Viewing changes to lib/lock/ulSema.c

  • Committer: Package Import Robot
  • Author(s): Nate Muench
  • Date: 2012-01-23 16:09:45 UTC
  • mfrom: (1.4.6) (2.4.26 sid)
  • Revision ID: package-import@ubuntu.com-20120123160945-b6s0r1vkcovucpf3
Tags: 2011.12.20-562307-0ubuntu1
* Merge latest upstream git tag. Fixes building on Precise
  (LP: #898289, LP: #905612)

* Items merged from Debian unstable:
  - debian/control:
    + open-vm-tools recommends open-vm-dkms. (LP: #598933)
    + open-vm-tools now suggests open-vm-toolbox. (LP: #604998)
  (From 2011.08.21-471295-1 release)
  - Updating maintainer and uploaders fields.
  - Removing vcs fields.
  - Removing references to Daniel's old email address.
  - Updating years in copyright file.
  - Updating to standards version 3.9.2.
  - Updating to debhelper version 8.
  - Switching to source format 3.0 (quilt).
  - Removing manual chrpath setting.
  - Removing exclusion from plugins from debhelper shlibs.
  - Rediffing kvers.patch.
  (From 2011.09.23-491607-1 release)
  - Marking binary architecture-dependend packages as linux and kfreebsd
  only.
  - Removing liburiparser-dev from build-depends as upstream dropped
  unity support.
  - Building with libproc-dev on amd64 again.
  - Dropping disabling of dnet support.
  (From 2011.09.23-491607-2 release)
  - Adding doxygen to build-depends for api documentation.
  - Adding libcunit1-dev to build-depends for test suites.
  - Minimizing rules file.
  - Adding open-vm-tools-dev package, containing only the api
    documentation for now.
  (From 2011.09.23-491607-3 release)
  - Sorting overrides in rules alphabetically.
  - Compacting copyright file.
  - Adding udev rule to set timeout for vmware scsi devices
  (From 2011.12.20-562307-1 release)
  - Adding patch to correct typo in upstreams dkms configuration

* Remaining Changes:
  - Remove Stable part of version numbering.
  - debian folder:
    + Re-added open-vm-dkms.postinst & open-vm-dkms.prerm.
      * Allows dkms modules to compile upon installation.
  - debian/control:
    + Re-add open-vm-source and make into a transitional package
      for open-vm-toolbox.
    + Return dependancies that were moved to open-vm-tools back to
      open-vm-toolbox.
  - debian/rules and debian/open-vm-toolbox.lintian-overrides:
    + Make vmware-user-suid-wrapper suid-root
  - debian/rules:
    + Added CFLAGS field with -Wno-deprecated-declarations
      * Will suppress issues with glib 2.31 or later.
    + Add line to copy vmware-xdg-detect-de into place.
    + Install vmware-user.desktop through toolbox package.
  - debian/open-vm-tools.init:
    + Re-add 'modprobe [-r] vmblock'.
    + Add 'modprobe [-r] vmxnet'.
      * Incase it's not loaded during boot.
    + Remove and re-add pcnet32 module
      * Will be done before (remove) and after (readd) vmxnet module
        is added.
      * If vmxnet doesn't exist (aka modules fail to build), pcnet32 can be
        still used for network connectivity.
      * Workaround until a better fix can be done.
  - Re-add gnome-session to debian/local/xautostart.conf
  - Manpages removed (from debian/manpages):
    + vmmemctl.9
    + vmxnet3.9
    + Remove references to manpages that have been removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#define _XOPEN_SOURCE 600
30
30
#endif
31
31
#include <semaphore.h>
32
 
#include <time.h>
33
32
#include <sys/time.h>
34
33
#endif
35
34
#endif
44
43
#include "win32u.h"
45
44
#endif
46
45
 
47
 
#define MXUSER_SEMA_SIGNATURE 0x414D4553 // 'SEMA' in memory
48
46
#define MXUSER_A_BILLION (1000 * 1000 * 1000)
49
47
 
50
48
#if defined(_WIN32)
184
182
{
185
183
   return ReleaseSemaphore(*sema, 1, NULL) ? 0 : GetLastError();
186
184
}
 
185
 
187
186
#elif defined(__APPLE__)
188
187
static int
189
188
MXUserInit(NativeSemaphore *sema)  // IN:
280
279
{
281
280
    return semaphore_signal(*sema);
282
281
}
 
282
 
283
283
#else
284
 
 
285
284
static int
286
285
MXUserInit(NativeSemaphore *sema)  // IN:
287
286
{
472
471
   Warning("\tserial number %u\n", sema->header.serialNumber);
473
472
 
474
473
   Warning("\treference count %u\n", Atomic_Read(&sema->activeUserCount));
475
 
   Warning("\tnative semaphore 0x%p\n", &sema->nativeSemaphore);
 
474
   Warning("\taddress of native semaphore 0x%p\n", &sema->nativeSemaphore);
476
475
}
477
476
 
478
477
 
514
513
   if (LIKELY(MXUserInit(&sema->nativeSemaphore) == 0)) {
515
514
      MXUserStats *stats;
516
515
 
517
 
      sema->header.signature = MXUSER_SEMA_SIGNATURE;
 
516
      sema->header.signature = MXUserGetSignature(MXUSER_TYPE_SEMA);
518
517
      sema->header.name = properName;
519
518
      sema->header.rank = rank;
520
519
      sema->header.serialNumber = MXUserAllocSerialNumber();
567
566
      int err;
568
567
      MXUserStats *stats;
569
568
 
570
 
      ASSERT(sema->header.signature == MXUSER_SEMA_SIGNATURE);
 
569
      MXUserValidateHeader(&sema->header, MXUSER_TYPE_SEMA);
571
570
 
572
571
      if (Atomic_Read(&sema->activeUserCount) != 0) {
573
572
         MXUserDumpAndPanic(&sema->header,
582
581
                            __FUNCTION__, err);
583
582
      }
584
583
 
 
584
      sema->header.signature = 0;  // just in case...
 
585
 
585
586
      MXUserRemoveFromList(&sema->header);
586
587
 
587
588
      stats = (MXUserStats *) Atomic_ReadPtr(&sema->statsMem);
593
594
         free(stats);
594
595
      }
595
596
 
596
 
      sema->header.signature = 0;  // just in case...
597
597
      free(sema->header.name);
598
598
      sema->header.name = NULL;
599
599
      free(sema);
606
606
 *
607
607
 * MXUser_DownSemaphore --
608
608
 *
609
 
 *      Perform an down (P; probeer te verlagen; "try to reduce") operation
 
609
 *      Perform a down (P; probeer te verlagen; "try to reduce") operation
610
610
 *      on a semaphore.
611
611
 *
612
612
 * Results:
625
625
   int err;
626
626
   MXUserStats *stats;
627
627
 
628
 
   ASSERT(sema && (sema->header.signature == MXUSER_SEMA_SIGNATURE));
 
628
   ASSERT(sema);
 
629
   MXUserValidateHeader(&sema->header, MXUSER_TYPE_SEMA);
629
630
 
630
631
   Atomic_Inc(&sema->activeUserCount);
631
632
 
678
679
 *
679
680
 * MXUser_TimedDownSemaphore --
680
681
 *
681
 
 *      Perform an down (P; probeer te verlagen; "try to reduce") operation
 
682
 *      Perform a down (P; probeer te verlagen; "try to reduce") operation
682
683
 *      on a semaphore with a timeout. The wait time will always have elapsed
683
684
 *      before the routine returns.
684
685
 *
700
701
   MXUserStats *stats;
701
702
   Bool downOccurred = FALSE;
702
703
 
703
 
   ASSERT(sema && (sema->header.signature == MXUSER_SEMA_SIGNATURE));
 
704
   ASSERT(sema);
 
705
   MXUserValidateHeader(&sema->header, MXUSER_TYPE_SEMA);
704
706
 
705
707
   Atomic_Inc(&sema->activeUserCount);
706
708
 
759
761
 *
760
762
 * MXUser_TryDownSemaphore --
761
763
 *
762
 
 *      Perform an try down (P; probeer te verlagen; "try to reduce") operation
 
764
 *      Perform a try down (P; probeer te verlagen; "try to reduce") operation
763
765
 *      on a semaphore.
764
766
 *
765
767
 * Results:
783
785
   MXUserStats *stats;
784
786
   Bool downOccurred = FALSE;
785
787
 
786
 
   ASSERT(sema && (sema->header.signature == MXUSER_SEMA_SIGNATURE));
 
788
   ASSERT(sema);
 
789
   MXUserValidateHeader(&sema->header, MXUSER_TYPE_SEMA);
787
790
 
788
791
   Atomic_Inc(&sema->activeUserCount);
789
792
 
829
832
{
830
833
   int err;
831
834
 
832
 
   ASSERT(sema && (sema->header.signature == MXUSER_SEMA_SIGNATURE));
 
835
   ASSERT(sema);
 
836
   MXUserValidateHeader(&sema->header, MXUSER_TYPE_SEMA);
833
837
 
834
838
   Atomic_Inc(&sema->activeUserCount);
835
839