]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Wrap VMCI list operations
authorVMware, Inc <>
Thu, 24 Feb 2011 21:47:15 +0000 (13:47 -0800)
committerMarcelo Vanzin <mvanzin@vmware.com>
Thu, 24 Feb 2011 21:47:15 +0000 (13:47 -0800)
Both the guest and the host VMCI drivers use list operations,
that clash with other header files, e.g, circList.h. This
change wraps all list operations in the common modules, such
that we can decide on which list implementation to use on a
per platform basis.

Signed-off-by: Marcelo Vanzin <mvanzin@vmware.com>
open-vm-tools/modules/linux/shared/vmci_kernel_if.h
open-vm-tools/modules/linux/vmci/vmciEvent.c
open-vm-tools/modules/linux/vmci/vmciNotifications.c
open-vm-tools/modules/linux/vmci/vmciQPair.c
open-vm-tools/modules/linux/vmci/vmciQueuePair.c
open-vm-tools/modules/linux/vmci/vmci_version.h

index 57b6633741702f6bbe40077f09e4136be616f4e1..32541fd367ab3189836cf973c7866d85752826f0 100644 (file)
@@ -33,7 +33,7 @@
 #endif
 
 #if defined(_WIN32)
-#include <ntddk.h>
+#  include <ntddk.h>
 #endif
 
 #if defined(linux) && !defined(VMKERNEL)
 
 #ifdef __APPLE__
 #  include <IOKit/IOLib.h>
-#include <mach/task.h>
-#include <mach/semaphore.h>
+#  include <mach/task.h>
+#  include <mach/semaphore.h>
 #endif
 
 #ifdef VMKERNEL
-#include "splock.h"
-#include "semaphore_ext.h"
-#include "vmkapi.h"
+#  include "splock.h"
+#  include "semaphore_ext.h"
+#  include "vmkapi.h"
 #endif
 
 #ifdef SOLARIS
@@ -65,7 +65,9 @@
 #include "vm_basic_types.h"
 #include "vmci_defs.h"
 
-#if defined(__APPLE__)
+#if defined(VMKERNEL)
+#  include "list.h"
+#else
 #  include "dbllnklst.h"
 #endif
 
@@ -369,5 +371,32 @@ Bool VMCI_DeviceShutdown(void);
 #  define VMCI_DeviceShutdown() FALSE
 #endif // !_WIN32
 
+#if defined(VMKERNEL)
+  typedef List_Links VMCIListItem;
+  typedef List_Links VMCIList;
+
+#  define VMCIList_Init(_l)   List_Init(_l)
+#  define VMCIList_InitEntry(_e)  List_InitElement(_e)
+#  define VMCIList_Empty(_l)   List_IsEmpty(_l)
+#  define VMCIList_Insert(_e, _l) List_Insert(_e, LIST_ATREAR(_l))
+#  define VMCIList_Remove(_e, _l) List_Remove(_e)
+#  define VMCIList_Scan(_cur, _l) LIST_FORALL(_l, _cur)
+#  define VMCIList_ScanSafe(_cur, _next, _l) LIST_FORALL_SAFE(_l, _cur, _next)
+#  define VMCIList_Entry(_elem, _type, _field) List_Entry(_elem, _type, _field)
+#  define VMCIList_First(_l) (VMCIList_Empty(_l)?NULL:List_First(_l))
+#else
+  typedef DblLnkLst_Links VMCIListItem;
+  typedef DblLnkLst_Links VMCIList;
+
+#  define VMCIList_Init(_l)   DblLnkLst_Init(_l)
+#  define VMCIList_InitEntry(_e)   DblLnkLst_Init(_e)
+#  define VMCIList_Empty(_l)   (!DblLnkLst_IsLinked(_l))
+#  define VMCIList_Insert(_e, _l) DblLnkLst_LinkLast(_l, _e)
+#  define VMCIList_Remove(_e, _l) DblLnkLst_Unlink1(_e)
+#  define VMCIList_Scan(_cur, _l) DblLnkLst_ForEach(_cur, _l)
+#  define VMCIList_ScanSafe(_cur, _next, _l) DblLnkLst_ForEachSafe(_cur, _next, _l)
+#  define VMCIList_Entry(_elem, _type, _field) DblLnkLst_Container(_elem, _type, _field)
+#  define VMCIList_First(_l) (VMCIList_Empty(_l)?NULL:(_l)->next)
+#endif
 
 #endif // _VMCI_KERNEL_IF_H_
index ff053a90124c6d23ee94075528f73a2f2b865eb2..d741b13d6f682b4b5833292c68c849e3303ddb5b 100644 (file)
@@ -43,7 +43,6 @@
 #else
 #  include "vmciDriver.h"
 #endif
-#include "circList.h"  /* Must come after vmciVmkInt.h. */
 
 #define LGPFX "VMCIEvent: "
 
@@ -57,14 +56,9 @@ typedef struct VMCISubscription {
    VMCI_Event     event;
    VMCI_EventCB   callback;
    void           *callbackData;
-   ListItem       subscriberListItem;
+   VMCIListItem   subscriberListItem;
 } VMCISubscription;
 
-typedef struct VMCISubscriptionItem {
-   ListItem          listItem;
-   VMCISubscription  sub;
-} VMCISubscriptionItem;
-
 
 static VMCISubscription *VMCIEventFind(VMCIId subID);
 static int VMCIEventDeliver(VMCIEventMsg *eventMsg);
@@ -92,7 +86,7 @@ static VMCISubscription *VMCIEventUnregisterSubscription(VMCIId subID);
 #endif
 
 
-static ListItem *subscriberArray[VMCI_EVENT_MAX] = {NULL};
+static VMCIList subscriberArray[VMCI_EVENT_MAX];
 static VMCILock subscriberLock;
 
 typedef struct VMCIDelayedEventInfo {
@@ -120,6 +114,11 @@ typedef struct VMCIDelayedEventInfo {
 void
 VMCIEvent_Init(void)
 {
+   int i;
+
+   for (i = 0; i < VMCI_EVENT_MAX; i++) {
+      VMCIList_Init(&subscriberArray[i]);
+   }
    VMCIEventInitLock(&subscriberLock, "VMCIEventSubscriberLock");
 }
 
@@ -143,12 +142,12 @@ VMCIEvent_Init(void)
 void
 VMCIEvent_Exit(void)
 {
-   ListItem *iter, *iter2;
+   VMCIListItem *iter, *iter2;
    VMCI_Event e;
 
    /* We free all memory at exit. */
    for (e = 0; e < VMCI_EVENT_MAX; e++) {
-      LIST_SCAN_SAFE(iter, iter2, subscriberArray[e]) {
+      VMCIList_ScanSafe(iter, iter2, &subscriberArray[e]) {
          VMCISubscription *cur;
 
          /*
@@ -162,7 +161,7 @@ VMCIEvent_Exit(void)
           */
          ASSERT(FALSE);
 
-         cur = LIST_CONTAINER(iter, VMCISubscription, subscriberListItem);
+         cur = VMCIList_Entry(iter, VMCISubscription, subscriberListItem);
          VMCI_FreeKernelMem(cur, sizeof *cur);
       }
    }
@@ -330,13 +329,13 @@ EventReleaseCB(void *clientData) // IN
 static VMCISubscription *
 VMCIEventFind(VMCIId subID)  // IN
 {
-   ListItem *iter;
+   VMCIListItem *iter;
    VMCI_Event e;
 
    for (e = 0; e < VMCI_EVENT_MAX; e++) {
-      LIST_SCAN(iter, subscriberArray[e]) {
+      VMCIList_Scan(iter, &subscriberArray[e]) {
          VMCISubscription *cur =
-            LIST_CONTAINER(iter, VMCISubscription, subscriberListItem);
+            VMCIList_Entry(iter, VMCISubscription, subscriberListItem);
          if (cur->id == subID) {
             VMCIEventGet(cur);
             return cur;
@@ -409,15 +408,15 @@ static int
 VMCIEventDeliver(VMCIEventMsg *eventMsg)  // IN
 {
    int err = VMCI_SUCCESS;
-   ListItem *iter;
+   VMCIListItem *iter;
    VMCILockFlags flags;
 
    ASSERT(eventMsg);
 
    VMCIEventGrabLock(&subscriberLock, &flags);
-   LIST_SCAN(iter, subscriberArray[eventMsg->eventData.event]) {
+   VMCIList_Scan(iter, &subscriberArray[eventMsg->eventData.event]) {
       VMCI_EventData *ed;
-      VMCISubscription *cur = LIST_CONTAINER(iter, VMCISubscription,
+      VMCISubscription *cur = VMCIList_Entry(iter, VMCISubscription,
                                              subscriberListItem);
       ASSERT(cur && cur->event == eventMsg->eventData.event);
 
@@ -570,6 +569,7 @@ VMCIEventRegisterSubscription(VMCISubscription *sub,   // IN
    sub->event = event;
    sub->callback = callback;
    sub->callbackData = callbackData;
+   VMCIList_InitEntry(&sub->subscriberListItem);
 
    VMCIEventGrabLock(&subscriberLock, &lockFlags);
 
@@ -602,7 +602,7 @@ VMCIEventRegisterSubscription(VMCISubscription *sub,   // IN
 
    if (success) {
       VMCI_CreateEvent(&sub->destroyEvent);
-      LIST_QUEUE(&sub->subscriberListItem, &subscriberArray[event]);
+      VMCIList_Insert(&sub->subscriberListItem, &subscriberArray[event]);
       result = VMCI_SUCCESS;
    } else {
       result = VMCI_ERROR_NO_RESOURCES;
@@ -642,7 +642,7 @@ VMCIEventUnregisterSubscription(VMCIId subID)    // IN
    s = VMCIEventFind(subID);
    if (s != NULL) {
       VMCIEventRelease(s);
-      LIST_DEL(&s->subscriberListItem, &subscriberArray[s->event]);
+      VMCIList_Remove(&s->subscriberListItem, &subscriberArray[s->event]);
    }
    VMCIEventReleaseLock(&subscriberLock, flags);
 
index 3e61ce14526fc98a15e3dc77600104f6a3fde242..c827e81bbbf01edf1d9f7596d3fb4190eb7c48f2 100644 (file)
@@ -37,7 +37,6 @@
 #include "vmci_call_defs.h"
 #include "vmciInt.h"
 #include "vmciUtil.h"
-#include "circList.h"
 
 #define LGPFX "VMCINotifications: "
 
@@ -66,14 +65,14 @@ typedef struct VMCINotifyHashEntry {
    void          *callbackData;
    VMCIEvent      destroyEvent;
    int            refCount;
-   ListItem       handleListItem;
-   ListItem       idxListItem;
+   VMCIListItem   handleListItem;
+   VMCIListItem   idxListItem;
 } VMCINotifyHashEntry;
 
 typedef struct VMCINotifyHashTable {
    VMCILock lock;
-   ListItem *entriesByIdx[HASH_TABLE_SIZE];
-   ListItem *entriesByHandle[HASH_TABLE_SIZE];
+   VMCIList entriesByIdx[HASH_TABLE_SIZE];
+   VMCIList entriesByHandle[HASH_TABLE_SIZE];
 } VMCINotifyHashTable;
 
 
@@ -156,8 +155,15 @@ static uint32 lastNotifyIdxReleased = PAGE_SIZE;
 void
 VMCINotifications_Init(void)
 {
-   memset(vmciNotifyHT.entriesByIdx, 0, ARRAY_SIZE(vmciNotifyHT.entriesByIdx));
-   memset(vmciNotifyHT.entriesByHandle, 0, ARRAY_SIZE(vmciNotifyHT.entriesByHandle));
+   int i;
+
+   for (i = 0; i < ARRAY_SIZE(vmciNotifyHT.entriesByIdx); i++) {
+      VMCIList_Init(&vmciNotifyHT.entriesByIdx[i]);
+   }
+   for (i = 0; i < ARRAY_SIZE(vmciNotifyHT.entriesByHandle); i++) {
+      VMCIList_Init(&vmciNotifyHT.entriesByHandle[i]);
+   }
+
    VMCI_InitLock(&vmciNotifyHT.lock, "VMCINotifyHashLock",
                  VMCI_LOCK_RANK_HIGHER_BH);
    return;
@@ -184,10 +190,10 @@ void
 VMCINotifications_Exit(void)
 {
    uint32 bucket;
-   ListItem *iter, *iter2;
+   VMCIListItem *iter, *iter2;
 
    for (bucket = 0; bucket < HASH_TABLE_SIZE; bucket++) {
-      LIST_SCAN_SAFE(iter, iter2, vmciNotifyHT.entriesByIdx[bucket]) {
+      VMCIList_ScanSafe(iter, iter2, &vmciNotifyHT.entriesByIdx[bucket]) {
          VMCINotifyHashEntry *cur;
 
          /*
@@ -201,7 +207,7 @@ VMCINotifications_Exit(void)
           */
          ASSERT(FALSE);
 
-         cur = LIST_CONTAINER(iter, VMCINotifyHashEntry, idxListItem);
+         cur = VMCIList_Entry(iter, VMCINotifyHashEntry, idxListItem);
          VMCI_FreeKernelMem(cur, sizeof *cur);
       }
    }
@@ -265,7 +271,7 @@ VMCINotifications_Hibernate(Bool enterHibernate)  // IN
 {
    VMCILockFlags flags;
    uint32 bucket;
-   ListItem *iter;
+   VMCIListItem *iter;
 
    if (enterHibernate) {
       /*
@@ -278,11 +284,11 @@ VMCINotifications_Hibernate(Bool enterHibernate)  // IN
    VMCI_GrabLock_BH(&vmciNotifyHT.lock, &flags);
 
    for (bucket = 0; bucket < HASH_TABLE_SIZE; bucket++) {
-      LIST_SCAN(iter, vmciNotifyHT.entriesByIdx[bucket]) {
+      VMCIList_Scan(iter, &vmciNotifyHT.entriesByIdx[bucket]) {
          VMCINotifyHashEntry *cur;
          int result;
 
-         cur = LIST_CONTAINER(iter, VMCINotifyHashEntry, idxListItem);
+         cur = VMCIList_Entry(iter, VMCINotifyHashEntry, idxListItem);
          result = LinkNotificationHypercall(cur->handle, cur->doorbell, cur->idx);
          if (result != VMCI_SUCCESS && result != VMCI_ERROR_DUPLICATE_ENTRY) {
             VMCI_WARNING((LGPFX"Failed to reregister doorbell handle 0x%x:0x%x "
@@ -366,7 +372,8 @@ VMCINotifyHashAddEntry(VMCINotifyHashEntry *entry) // IN
       result = VMCI_ERROR_ALREADY_EXISTS;
       goto out;
    }
-   LIST_QUEUE(&entry->handleListItem, &vmciNotifyHT.entriesByHandle[bucket]);
+   VMCIList_Insert(&entry->handleListItem,
+                   &vmciNotifyHT.entriesByHandle[bucket]);
 
    /*
     * Below we try to allocate an index in the notification bitmap
@@ -408,7 +415,7 @@ VMCINotifyHashAddEntry(VMCINotifyHashEntry *entry) // IN
    bucket = VMCI_NOTIF_HASH(newNotifyIdx);
    entry->refCount++;
    entry->idx = newNotifyIdx;
-   LIST_QUEUE(&entry->idxListItem, &vmciNotifyHT.entriesByIdx[bucket]);
+   VMCIList_Insert(&entry->idxListItem, &vmciNotifyHT.entriesByIdx[bucket]);
    result = VMCI_SUCCESS;
 out:
    VMCI_ReleaseLock_BH(&vmciNotifyHT.lock, flags);
@@ -476,9 +483,10 @@ VMCINotifyHashRemoveEntry(VMCIHandle handle, // IN
    entry = VMCINotifyHashFindByHandle(handle, doorbell, &bucket);
    if (entry) {
       ASSERT(entry->refCount > 0);
-      LIST_DEL(&entry->handleListItem, &vmciNotifyHT.entriesByHandle[bucket]);
+      VMCIList_Remove(&entry->handleListItem,
+                      &vmciNotifyHT.entriesByHandle[bucket]);
       bucket = VMCI_NOTIF_HASH(entry->idx);
-      LIST_DEL(&entry->idxListItem, &vmciNotifyHT.entriesByIdx[bucket]);
+      VMCIList_Remove(&entry->idxListItem, &vmciNotifyHT.entriesByIdx[bucket]);
       notifyIdxCount--;
       if (entry->idx == maxNotifyIdx - 1) {
          /*
@@ -589,16 +597,16 @@ static VMCINotifyHashEntry *
 VMCINotifyHashFindByIdx(uint32 idx,         // IN
                         uint32 *hashBucket) // IN/OUT: hash value for idx
 {
-   ListItem *iter;
+   VMCIListItem *iter;
    uint32 bucket = VMCI_NOTIF_HASH(idx);
 
    if (hashBucket) {
       *hashBucket = bucket;
    }
 
-   LIST_SCAN(iter, vmciNotifyHT.entriesByIdx[bucket]) {
+   VMCIList_Scan(iter, &vmciNotifyHT.entriesByIdx[bucket]) {
       VMCINotifyHashEntry *cur =
-         LIST_CONTAINER(iter, VMCINotifyHashEntry, idxListItem);
+         VMCIList_Entry(iter, VMCINotifyHashEntry, idxListItem);
       if (cur->idx == idx) {
          return cur;
       }
@@ -631,16 +639,16 @@ VMCINotifyHashFindByHandle(VMCIHandle handle,  // IN
                            Bool doorbell,      // IN
                            uint32 *hashBucket) // IN/OUT: hash value for handle
 {
-   ListItem *iter;
+   VMCIListItem *iter;
    uint32 bucket = VMCI_NOTIF_HASH(handle.resource);
 
    if (hashBucket) {
       *hashBucket = bucket;
    }
 
-   LIST_SCAN(iter, vmciNotifyHT.entriesByHandle[bucket]) {
+   VMCIList_Scan(iter, &vmciNotifyHT.entriesByHandle[bucket]) {
       VMCINotifyHashEntry *cur =
-         LIST_CONTAINER(iter, VMCINotifyHashEntry, handleListItem);
+         VMCIList_Entry(iter, VMCINotifyHashEntry, handleListItem);
       if (VMCI_HANDLE_EQUAL(cur->handle, handle) && cur->doorbell == doorbell) {
          return cur;
       }
@@ -698,13 +706,13 @@ static void
 VMCINotifyHashFireEntries(uint32 notifyIdx) // IN
 {
    VMCILockFlags flags;
-   ListItem *iter;
+   VMCIListItem *iter;
    int bucket = VMCI_NOTIF_HASH(notifyIdx);
 
    VMCI_GrabLock_BH(&vmciNotifyHT.lock, &flags);
 
-   LIST_SCAN(iter, vmciNotifyHT.entriesByIdx[bucket]) {
-      VMCINotifyHashEntry *cur = LIST_CONTAINER(iter, VMCINotifyHashEntry,
+   VMCIList_Scan(iter, &vmciNotifyHT.entriesByIdx[bucket]) {
+      VMCINotifyHashEntry *cur = VMCIList_Entry(iter, VMCINotifyHashEntry,
                                                 idxListItem);
       if (cur->idx == notifyIdx && cur->notifyCB) {
          if (cur->runDelayed) {
@@ -868,6 +876,8 @@ VMCINotificationRegister(VMCIHandle *handle,     // IN
    entry->notifyCB = NULL; // Wait with this until link is established in hypervisor
    entry->callbackData = callbackData;
    entry->refCount = 0;
+   VMCIList_InitEntry(&entry->handleListItem);
+   VMCIList_InitEntry(&entry->idxListItem);
    result = VMCINotifyHashAddEntry(entry);
    if (result != VMCI_SUCCESS) {
       VMCI_FreeKernelMem(entry, sizeof *entry);
index bfa0fcd52c0e3a98b3cfd6382b4b840254ac7cb8..c29289a12c5bae40cf3ffe3978b11c40ab3fc055 100644 (file)
@@ -71,9 +71,6 @@
 #include "vm_assert.h"
 #include "vmci_handle_array.h"
 #include "vmci_defs.h"
-#ifndef VMKERNEL
-#  include "circList.h"
-#endif
 #if defined VMKERNEL || !defined VMX86_TOOLS
 #  include "vmciQueuePair.h"
 #else
index f138d869e2ec3fbb985fba4746d48ae2f6b11a63..1a15b5a6070efd7d7d3e46fb4c7b58e4fb6638f1 100644 (file)
 #include "vmciKernelAPI.h"
 #include "vmciQueuePairInt.h"
 #include "vmciUtil.h"
-#include "circList.h"
 
 #define LGPFX "VMCIQueuePair: "
 
 typedef struct QueuePairEntry {
-   VMCIHandle handle;
-   VMCIId     peer;
-   uint32     flags;
-   uint64     produceSize;
-   uint64     consumeSize;
-   uint64     numPPNs;
-   PPNSet     ppnSet;
-   void      *produceQ;
-   void      *consumeQ;
-   uint32     refCount;
-   Bool       hibernateFailure;
-   ListItem   listItem;
+   VMCIHandle    handle;
+   VMCIId        peer;
+   uint32        flags;
+   uint64        produceSize;
+   uint64        consumeSize;
+   uint64        numPPNs;
+   PPNSet        ppnSet;
+   void         *produceQ;
+   void         *consumeQ;
+   uint32        refCount;
+   Bool          hibernateFailure;
+   VMCIListItem  listItem;
 } QueuePairEntry;
 
 typedef struct QueuePairList {
-   ListItem      *head;
+   VMCIList       head;
    Atomic_uint32  hibernate;
    VMCIMutex      mutex;
 } QueuePairList;
@@ -203,7 +202,7 @@ QueuePairList_Unlock(void)
 void
 VMCIQueuePair_Init(void)
 {
-   queuePairList.head = NULL;
+   VMCIList_Init(&queuePairList.head);
    Atomic_Write(&queuePairList.hibernate, 0);
    QueuePairLock_Init();
    hibernateFailedList = VMCIHandleArray_Create(0);
@@ -319,14 +318,14 @@ VMCIQueuePair_Sync(void)
 static QueuePairEntry *
 QueuePairList_FindEntry(VMCIHandle handle) // IN:
 {
-   ListItem *next;
+   VMCIListItem *next;
 
    if (VMCI_HANDLE_INVALID(handle)) {
       return NULL;
    }
 
-   LIST_SCAN(next, queuePairList.head) {
-      QueuePairEntry *entry = LIST_CONTAINER(next, QueuePairEntry, listItem);
+   VMCIList_Scan(next, &queuePairList.head) {
+      QueuePairEntry *entry = VMCIList_Entry(next, QueuePairEntry, listItem);
 
       if (VMCI_HANDLE_EQUAL(entry->handle, handle)) {
          return entry;
@@ -358,7 +357,7 @@ static void
 QueuePairList_AddEntry(QueuePairEntry *entry) // IN:
 {
    if (entry) {
-      LIST_QUEUE(&entry->listItem, &queuePairList.head);
+      VMCIList_Insert(&entry->listItem, &queuePairList.head);
    }
 }
 
@@ -384,7 +383,7 @@ static void
 QueuePairList_RemoveEntry(QueuePairEntry *entry) // IN:
 {
    if (entry) {
-      LIST_DEL(&entry->listItem, &queuePairList.head);
+      VMCIList_Remove(&entry->listItem, &queuePairList.head);
    }
 }
 
@@ -409,10 +408,10 @@ QueuePairList_RemoveEntry(QueuePairEntry *entry) // IN:
 static QueuePairEntry *
 QueuePairList_GetHead(void)
 {
-   ListItem *first = LIST_FIRST(queuePairList.head);
+   VMCIListItem *first = VMCIList_First(&queuePairList.head);
 
    if (first) {
-      QueuePairEntry *entry = LIST_CONTAINER(first, QueuePairEntry, listItem);
+      QueuePairEntry *entry = VMCIList_Entry(first, QueuePairEntry, listItem);
       return entry;
    }
 
@@ -601,7 +600,7 @@ QueuePairEntryCreate(VMCIHandle handle,  // IN:
       entry->produceQ = produceQ;
       entry->consumeQ = consumeQ;
       entry->refCount = 0;
-      INIT_LIST_ITEM(&entry->listItem);
+      VMCIList_InitEntry(&entry->listItem);
    }
    return entry;
 }
@@ -1206,12 +1205,12 @@ VMCIQueuePair_Convert(Bool toLocal,     // IN
                       Bool deviceReset) // IN
 {
    if (toLocal) {
-      ListItem *next;
+      VMCIListItem *next;
 
       QueuePairList_Lock();
 
-      LIST_SCAN(next, queuePairList.head) {
-         QueuePairEntry *entry = LIST_CONTAINER(next, QueuePairEntry, listItem);
+      VMCIList_Scan(next, &queuePairList.head) {
+         QueuePairEntry *entry = VMCIList_Entry(next, QueuePairEntry, listItem);
 
          if (!(entry->flags & VMCI_QPFLAG_LOCAL)) {
             VMCIQueue *prodQ;
index bc50a6b760ad8cacdcbd6c4dbf2b749ac690f004..948a657b7f3e6143e4e42105c7a676075bf56aa8 100644 (file)
@@ -25,8 +25,8 @@
 #ifndef _VMCI_VERSION_H_
 #define _VMCI_VERSION_H_
 
-#define VMCI_DRIVER_VERSION          9.1.4.0
-#define VMCI_DRIVER_VERSION_COMMAS   9,1,4,0
-#define VMCI_DRIVER_VERSION_STRING   "9.1.4.0"
+#define VMCI_DRIVER_VERSION          9.1.5.0
+#define VMCI_DRIVER_VERSION_COMMAS   9,1,5,0
+#define VMCI_DRIVER_VERSION_STRING   "9.1.5.0"
 
 #endif /* _VMCI_VERSION_H_ */