Make kernel complib static
authorftillier <ftillier@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 29 Jul 2005 05:41:02 +0000 (05:41 +0000)
committerftillier <ftillier@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 29 Jul 2005 05:41:02 +0000 (05:41 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@49 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

21 files changed:
core/al/kernel/al_driver.c
core/bus/kernel/SOURCES
core/bus/kernel/bus_driver.c
core/bus/kernel/ib_bus.inf
core/complib/cl_memory.c
core/complib/cl_obj.c
core/complib/kernel/SOURCES
core/complib/kernel/cl_driver.c
core/iou/kernel/SOURCES
core/iou/kernel/iou_driver.c
hw/mt23108/kernel/hca_driver.c
hw/mt23108/kernel/infinihost.inf
hw/mt23108/vapi/mlxsys/os_dep/win/tdriver/Md.c
inc/kernel/complib/cl_init.h [new file with mode: 0644]
inc/kernel/complib/cl_types_osd.h
tests/alts/kernel/alts.inf
tests/alts/kernel/alts_driver.c
ulp/ipoib/kernel/SOURCES
ulp/ipoib/kernel/ipoib_adapter.c
ulp/srp/kernel/SOURCES
ulp/srp/kernel/srp_driver.c

index 4ca1970..96320c6 100644 (file)
@@ -34,8 +34,7 @@
 // Provides the driver entry points for the Access Layer.\r
 //\r
 \r
-#include "complib/cl_types.h"\r
-#include "complib/cl_memory.h"\r
+#include <complib/cl_init.h>\r
 #include "al_init.h"\r
 #include "al_mgr.h"\r
 #include "al_debug.h"\r
@@ -239,10 +238,19 @@ DllInitialize(
 \r
        AL_ENTER( AL_DBG_DEV );\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               AL_TRACE_EXIT( AL_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        /* Get the registry values. */\r
        status = __read_registry( p_registry_path );\r
        if( !NT_SUCCESS(status) )\r
        {\r
+               CL_DEINIT;\r
                AL_TRACE_EXIT( AL_DBG_ERROR, \r
                        ("__read_registry returned %08x.\n", status) );\r
                return status;\r
@@ -258,6 +266,8 @@ DllUnload( void )
 {\r
        AL_ENTER( AL_DBG_DEV );\r
 \r
+       CL_DEINIT;\r
+\r
        AL_EXIT( AL_DBG_DEV );\r
        return STATUS_SUCCESS;\r
 }\r
index 13f2bd1..4bdc58d 100644 (file)
@@ -10,7 +10,7 @@ SOURCES= ibbus.rc             \
 \r
 INCLUDES=..\..\..\inc;..\..\..\inc\kernel;..\..\al;..\..\al\kernel;\r
 \r
-C_DEFINES=$(C_DEFINES) -DDRIVER -DDEPRECATE_DDK_FUNCTIONS\r
+C_DEFINES=$(C_DEFINES) -DDRIVER -DDEPRECATE_DDK_FUNCTIONS -DNEED_CL_OBJ\r
 \r
 TARGETLIBS= \\r
        $(TARGETPATH)\*\complib.lib \\r
index 5022bb9..09c1713 100644 (file)
  */\r
 \r
 \r
-\r
-\r
 /*\r
  * Provides the driver entry points for the InfiniBand Bus Driver.\r
  */\r
 \r
-#include "complib/cl_types.h"\r
+#include <complib/cl_types.h>\r
 #include "bus_driver.h"\r
 #include "bus_pnp.h"\r
 #include "al_mgr.h"\r
 #include "al_dev.h"\r
-#include "complib/cl_memory.h"\r
+#include <complib/cl_init.h>\r
+\r
 \r
 bus_globals_t  bus_globals = {\r
        BUS_DBG_ERROR,\r
@@ -327,6 +326,8 @@ bus_drv_unload(
 \r
        UNUSED_PARAM( p_driver_obj );\r
 \r
+       CL_DEINIT;\r
+\r
        BUS_EXIT( BUS_DBG_DRV );\r
 }\r
 \r
@@ -340,6 +341,14 @@ DriverEntry(
 \r
        BUS_ENTER( BUS_DBG_DRV );\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               BUS_TRACE_EXIT( BUS_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        /* Store the driver object pointer in the global parameters. */\r
        bus_globals.p_driver_obj = p_driver_obj;\r
 \r
@@ -347,6 +356,7 @@ DriverEntry(
        status = __read_registry( p_registry_path );\r
        if( !NT_SUCCESS(status) )\r
        {\r
+               CL_DEINIT;\r
                BUS_TRACE_EXIT( BUS_DBG_ERROR, \r
                        ("__read_registry returned %08x.\n", status) );\r
                return status;\r
index 5db472d..46d8213 100644 (file)
@@ -7,7 +7,7 @@ Class=System
 ClassGuid={4D36E97D-E325-11CE-BFC1-08002BE10318}\r
 Provider=%SST%\r
 CatalogFile=ibbus.cat\r
-DriverVer=05/10/2005,3.0.0031.0\r
+DriverVer=07/28/2005,3.0.0034.0\r
 \r
 \r
 ; ================= Device Install section =====================\r
@@ -28,7 +28,6 @@ Ibbus.WOW64CopyFiles=%DIRID_SYSTEM_X86%
 1=%DiskId%,,,\ia64\r
 \r
 [SourceDisksFiles.x86]\r
-complib.sys=1\r
 ibal.sys=1\r
 ibbus.sys=1\r
 ibiou.sys=1\r
@@ -42,7 +41,6 @@ dapld.dll=1
 dapl.dll=1\r
 \r
 [SourceDisksFiles.amd64]\r
-complib.sys=1\r
 ibal.sys=1\r
 ibbus.sys=1\r
 ibiou.sys=1\r
@@ -64,7 +62,6 @@ dapl32d.dll=1
 dapl32.dll=1\r
 \r
 [SourceDisksFiles.ia64]\r
-complib.sys=1\r
 ibal.sys=1\r
 ibbus.sys=1\r
 ibiou.sys=1\r
@@ -154,7 +151,6 @@ CopyFiles = Iou.CopyFiles
 AddService = ibiou,%SPSVCINST_ASSOCSERVICE%,Iou.ServiceInstall\r
 \r
 [Ibbus.CopyFiles]\r
-complib.sys\r
 ibal.sys\r
 ibbus.sys\r
 \r
index 5f8d736..3ed52f0 100644 (file)
 \r
 \r
 #include "cl_memtrack.h"\r
+#include <complib/cl_atomic.h>\r
 \r
 \r
 cl_mem_tracker_t               *gp_mem_tracker = NULL;\r
+atomic32_t                             g_mem_trk_ref = 0;\r
 \r
 \r
 /*\r
@@ -73,7 +75,10 @@ __cl_mem_track_start( void )
        cl_status_t                     status;\r
 \r
        if( gp_mem_tracker )\r
+       {\r
+               cl_atomic_inc( &g_mem_trk_ref );\r
                return;\r
+       }\r
 \r
        /* Allocate the memory tracker object. */\r
        gp_mem_tracker = (cl_mem_tracker_t*)\r
@@ -95,6 +100,8 @@ __cl_mem_track_start( void )
                return;\r
        }\r
 \r
+       cl_atomic_inc( &g_mem_trk_ref );\r
+\r
        cl_msg_out( "\n\n\n*** Memory tracker object address = %p ***\n\n\n",\r
                gp_mem_tracker );\r
 }\r
@@ -112,6 +119,9 @@ __cl_mem_track_stop( void )
        if( !gp_mem_tracker )\r
                return;\r
 \r
+       if( cl_atomic_dec( &g_mem_trk_ref ) )\r
+               return;\r
+\r
        if( cl_qmap_count( &gp_mem_tracker->alloc_map ) )\r
        {\r
                /* There are still items in the list.  Print them out. */\r
@@ -207,7 +217,7 @@ __cl_malloc_trk(
        cl_malloc_hdr_t *p_hdr;\r
        cl_list_item_t  *p_list_item;\r
        void                    *p_mem;\r
-       char                    temp_buf[FILE_NAME_LENGTH];\r
+       uint64_t                temp_buf[FILE_NAME_LENGTH/sizeof(uint64_t)];\r
        int32_t                 temp_line;\r
 \r
        /*\r
@@ -227,9 +237,9 @@ __cl_malloc_trk(
         * parameters are in paged pool.\r
         */\r
        temp_line = line_num;\r
-       strncpy( temp_buf, p_file_name, FILE_NAME_LENGTH );\r
+       strncpy( (char*)temp_buf, p_file_name, FILE_NAME_LENGTH );\r
        /* Make sure the string is null terminated. */\r
-       temp_buf[FILE_NAME_LENGTH - 1] = '\0';\r
+       ((char*)temp_buf)[FILE_NAME_LENGTH - 1] = '\0';\r
 \r
        cl_spinlock_acquire( &gp_mem_tracker->lock );\r
 \r
index d07c8f9..7448342 100644 (file)
@@ -43,6 +43,7 @@
 \r
 /* The global object manager. */\r
 cl_obj_mgr_t                           *gp_obj_mgr = NULL;\r
+atomic32_t                                     g_cl_obj_ref = 0;\r
 \r
 \r
 \r
@@ -57,7 +58,10 @@ cl_obj_mgr_create()
 \r
        /* See if the object manager has already been created. */\r
        if( gp_obj_mgr )\r
+       {\r
+               cl_atomic_inc( &g_cl_obj_ref );\r
                return CL_SUCCESS;\r
+       }\r
 \r
        /* Allocate the object manager. */\r
        gp_obj_mgr = cl_zalloc( sizeof( cl_obj_mgr_t ) );\r
@@ -70,6 +74,8 @@ cl_obj_mgr_create()
        cl_async_proc_construct( &gp_obj_mgr->async_proc_mgr );\r
        cl_qpool_construct( &gp_obj_mgr->rel_pool );\r
 \r
+       cl_atomic_inc( &g_cl_obj_ref );\r
+\r
        /* Initialize the spinlock. */\r
        status = cl_spinlock_init( &gp_obj_mgr->lock );\r
        if( status != CL_SUCCESS )\r
@@ -110,6 +116,10 @@ cl_obj_mgr_destroy()
        if( !gp_obj_mgr )\r
                return;\r
 \r
+       /* See if this is the last call. */\r
+       if( cl_atomic_dec( &g_cl_obj_ref ) )\r
+               return;\r
+\r
        /* Verify that all object's have been destroyed. */\r
        for( p_list_item = cl_qlist_head( &gp_obj_mgr->obj_list );\r
                 p_list_item != cl_qlist_end( &gp_obj_mgr->obj_list );\r
index b43f568..e1f602c 100644 (file)
@@ -1,6 +1,6 @@
 TARGETNAME=complib\r
 TARGETPATH=..\..\..\bin\kernel\obj$(BUILD_ALT_DIR)\r
-TARGETTYPE=EXPORT_DRIVER\r
+TARGETTYPE=DRIVER_LIBRARY\r
 \r
 DLLDEF=cl_exports.def\r
 \r
index e29ab29..2efa987 100644 (file)
 #include "complib/comp_lib.h"\r
 \r
 \r
-NTSTATUS \r
-DriverEntry( \r
-       IN                              DRIVER_OBJECT                           *pDevObj, \r
-    IN                         UNICODE_STRING                          *RegistryPath )\r
-{\r
-       UNUSED_PARAM( pDevObj );\r
-       UNUSED_PARAM( RegistryPath );\r
-       return STATUS_SUCCESS;\r
-}\r
-\r
-\r
-NTSTATUS\r
-DllInitialize(\r
-       IN                              UNICODE_STRING                          *RegistryPath )\r
-{\r
-       cl_status_t             status;\r
-       UNUSED_PARAM( RegistryPath );\r
-\r
-       __cl_mem_track( TRUE );\r
-\r
-       status = cl_obj_mgr_create();\r
-\r
-       return cl_to_ntstatus( status );\r
-}\r
-\r
-\r
-NTSTATUS\r
-DllUnload(void)\r
-{\r
-       cl_obj_mgr_destroy();\r
-\r
-       __cl_mem_track( FALSE );\r
-\r
-       return STATUS_SUCCESS;\r
-}\r
-\r
-\r
 CL_EXPORT NTSTATUS\r
 cl_to_ntstatus(\r
        IN      cl_status_t     status )\r
index d60580d..3796900 100644 (file)
@@ -9,7 +9,7 @@ SOURCES= ibiou.rc               \
 \r
 INCLUDES=..\..\..\inc;..\..\..\inc\kernel;\r
 \r
-C_DEFINES=$(C_DEFINES) -DDRIVER -DDEPRECATE_DDK_FUNCTIONS\r
+C_DEFINES=$(C_DEFINES) -DDRIVER -DDEPRECATE_DDK_FUNCTIONS -DNEED_CL_OBJ\r
 \r
 TARGETLIBS= \\r
        $(TARGETPATH)\*\complib.lib\r
index 5f880d8..a062767 100644 (file)
  * Provides the driver entry points for the InfiniBand I/O Unit Bus Driver.\r
  */\r
 \r
-#include "complib/cl_types.h"\r
+#include <complib/cl_types.h>\r
 #include "iou_driver.h"\r
 #include "iou_pnp.h"\r
-#include "complib/cl_memory.h"\r
+#include <complib/cl_init.h>\r
 \r
 \r
 iou_globals_t  iou_globals = {\r
@@ -188,6 +188,8 @@ iou_unload(
 \r
        UNUSED_PARAM( p_driver_obj );\r
 \r
+       CL_DEINIT;\r
+\r
        IOU_EXIT( IOU_DBG_DRV );\r
 }\r
 \r
@@ -201,6 +203,14 @@ DriverEntry(
 \r
        IOU_ENTER( IOU_DBG_DRV );\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               IOU_TRACE_EXIT( IOU_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        /* Store the driver object pointer in the global parameters. */\r
        iou_globals.p_driver_obj = p_driver_obj;\r
 \r
@@ -208,6 +218,7 @@ DriverEntry(
        status = __read_registry( p_registry_path );\r
        if( !NT_SUCCESS(status) )\r
        {\r
+               CL_DEINIT;\r
                IOU_TRACE_EXIT( IOU_DBG_ERROR, \r
                        ("__read_registry returned %08x.\n", status) );\r
                return status;\r
index 2b623e7..39fca4b 100644 (file)
@@ -42,6 +42,7 @@
 #include "MdCard.h"\r
 #pragma warning( pop )\r
 #include <iba/ib_ci_ifc.h>\r
+#include <complib/cl_init.h>\r
 \r
 \r
 /*\r
@@ -267,9 +268,18 @@ DriverEntry(
 \r
        HCA_ENTER( HCA_DBG_DEV );\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               HCA_TRACE_EXIT( HCA_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        status = __read_registry( p_registry_path );\r
        if( !NT_SUCCESS( status ) )\r
        {\r
+               CL_DEINIT;\r
                HCA_TRACE_EXIT( HCA_DBG_ERROR,\r
                        ("__read_registry_path returned 0x%X.\n", status) );\r
                return status;\r
@@ -279,6 +289,7 @@ DriverEntry(
        cl_status = mlnx_hobs_init();\r
        if( cl_status != CL_SUCCESS )\r
        {\r
+               CL_DEINIT;\r
                HCA_TRACE_EXIT( HCA_DBG_ERROR,\r
                        ("mlnx_hobs_init returned %s.\n", cl_status_text[cl_status]) );\r
                return cl_to_ntstatus( cl_status );\r
@@ -353,6 +364,8 @@ hca_drv_unload(
 \r
        UNUSED_PARAM( p_driver_obj );\r
 \r
+       CL_DEINIT;\r
+\r
        HCA_EXIT( HCA_DBG_DEV );\r
 }\r
 \r
index 9435c9b..377e1d9 100644 (file)
@@ -7,7 +7,7 @@ Class=InfiniBandHca
 ClassGUID=%HcaClassGuid%\r
 Provider=%SST%\r
 CatalogFile=infiniserv.cat\r
-DriverVer=05/10/2005,3.0.0031.0\r
+DriverVer=07/28/2005,3.0.0034.0\r
 \r
 ; ================= Destination directory section =====================\r
 \r
@@ -45,7 +45,6 @@ HKLM,"System\CurrentControlSet\Control\CoDeviceInstallers", \
 \r
 [SourceDisksFiles]\r
 IbInstaller.dll=1\r
-complib.sys=1\r
 ibal.sys=1\r
 mt23108.sys=1\r
 thca.sys=1\r
@@ -54,7 +53,6 @@ mt23108ud.dll=1
 \r
 [SourceDisksFiles.amd64]\r
 IbInstaller.dll=1\r
-complib.sys=1\r
 ibal.sys=1\r
 mt23108.sys=1\r
 thca.sys=1\r
@@ -65,7 +63,6 @@ mt23108ud.dll=1
 \r
 [SourceDisksFiles.ia64]\r
 IbInstaller.dll=1\r
-complib.sys=1\r
 ibal.sys=1\r
 mt23108.sys=1\r
 thca.sys=1\r
@@ -131,7 +128,6 @@ AddService = mt23108,%SPSVCINST_ASSOCSERVICE%,MT23108.ServiceInstall
 AddService = ibal,%SPSVCINST_NULL%,Ibal.ServiceInstall\r
 \r
 [MT23108.CopyFiles]\r
-complib.sys\r
 ibal.sys\r
 mt23108.sys\r
 thca.sys\r
index ded1da1..f28fb87 100644 (file)
  * $Id$\r
  */\r
 \r
+\r
 #define _MD_C_\r
 \r
 #include "MdGen.h"\r
 #include "thh_hob.h"\r
+#include <complib/cl_init.h>\r
+\r
 \r
 #define CHECK_INIT(lbl)                                                \\r
     if (l_MddkStatus != MT_OK)                         \\r
@@ -255,6 +258,10 @@ Return Value:
        /* no context yet */\r
        g_pDrvContext = NULL;\r
        \r
+       l_Status = CL_INIT;\r
+       if( !NT_SUCCESS(l_Status) )\r
+               return l_Status;\r
+\r
        /* create Control Device names */\r
        if (!MdCreateDeviceNames(MD_CTL_DEVICE_NAME, &l_usNtDeviceName, &l_usDosDeviceName))\r
        { /* failed - no resources */\r
@@ -410,6 +417,8 @@ err:
        MdKdPrint( DBGLVL_ALWAYS ,("(MdDeviceInit) Device failed to initialize \n"));\r
 #pragma warning( pop )\r
 \r
+       CL_DEINIT;\r
+\r
        /* Write to event log */\r
        WriteEventLogEntry(     pi_pDriverObject, MD_EVENT_LOG_LOAD_ERROR,\r
                        0, l_Status, 1, l_Status );\r
@@ -565,6 +574,9 @@ if (l_pDrvContext->m_fSupportTavor)
 \r
        /* free the driver context */\r
        MdExFreePool( l_pDrvContext );\r
+\r
+       CL_DEINIT;\r
+\r
        g_pDrvContext = NULL;\r
        \r
        MDASSERT( g_pDbgData->m_nExAllocCount == 0 );\r
diff --git a/inc/kernel/complib/cl_init.h b/inc/kernel/complib/cl_init.h
new file mode 100644 (file)
index 0000000..206e630
--- /dev/null
@@ -0,0 +1,59 @@
+/*\r
+ * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ *     Redistribution and use in source and binary forms, with or\r
+ *     without modification, are permitted provided that the following\r
+ *     conditions are met:\r
+ *\r
+ *      - Redistributions of source code must retain the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer.\r
+ *\r
+ *      - Redistributions in binary form must reproduce the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer in the documentation and/or other materials\r
+ *        provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ *\r
+ * $Id$\r
+ */\r
+\r
+\r
+#ifndef _CL_INIT_H_\r
+#define _CL_INIT_H_\r
+\r
+\r
+#include <complib/cl_memory.h>\r
+#include <complib/cl_obj.h>\r
+\r
+\r
+#ifdef CL_TRACK_MEM\r
+#ifdef NEED_CL_OBJ\r
+#define CL_INIT                (__cl_mem_track( TRUE ), cl_obj_mgr_create())\r
+#define CL_DEINIT      (cl_obj_mgr_destroy(), __cl_mem_track( FALSE ))\r
+#else  /* NEED_CL_OBJ */\r
+#define CL_INIT                (__cl_mem_track( TRUE ), STATUS_SUCCESS)\r
+#define CL_DEINIT      (__cl_mem_track( FALSE ))\r
+#endif /* NEED_CL_OBJ */\r
+#else  /* CL_TRACK_MEM */\r
+#ifdef NEED_CL_OBJ\r
+#define CL_INIT                cl_obj_mgr_create()\r
+#define CL_DEINIT      cl_obj_mgr_destroy()\r
+#else  /* NEED_CL_OBJ */\r
+#define CL_INIT                STATUS_SUCCESS\r
+#define CL_DEINIT\r
+#endif /* NEED_CL_OBJ */\r
+#endif /* CL_TRACK_MEM */\r
+\r
+#endif // _CL_INIT_H_\r
index b328272..9849931 100644 (file)
@@ -46,6 +46,9 @@ extern "C"
 #include <wdmwarn4.h>\r
 #if defined( NDIS_MINIPORT_DRIVER )\r
 #include <ndis.h>\r
+#if NDIS_WDM\r
+#define CL_NTDDK\r
+#endif /* NDIS_WDM */\r
 #elif !defined( _MINIPORT_ )\r
 #include <ntddk.h>\r
 #define CL_NTDDK\r
@@ -93,11 +96,7 @@ typedef volatile __int32             atomic32_t;
 #define UNUSED_PARAM   UNREFERENCED_PARAMETER\r
 \r
 \r
-#if !defined(EXPORT_CL_SYMBOLS)\r
-#define CL_EXPORT              DECLSPEC_IMPORT\r
-#else\r
-#define CL_EXPORT              __declspec(dllexport)\r
-#endif\r
+#define CL_EXPORT\r
 \r
 #if !defined( __cplusplus )\r
 #define inline                 __inline\r
@@ -119,15 +118,14 @@ typedef enum _cl_status   cl_status_t;
 \r
 #define CL_CONST64( x )        x##ui64\r
 \r
-CL_INLINE NTSTATUS\r
+NTSTATUS\r
 cl_to_ntstatus(\r
        IN      enum _cl_status status );\r
 \r
-CL_INLINE enum _cl_status\r
+enum _cl_status\r
 cl_from_ntstatus(\r
        IN      NTSTATUS status );\r
 \r
-\r
 #ifdef __cplusplus\r
 }      /* extern "C" */\r
 #endif\r
index 4898bb0..8c6b781 100644 (file)
@@ -26,7 +26,7 @@ Class=InfiniBandHca
 ClassGUID=%HcaClassGuid%\r
 Provider=%Vendor%\r
 CatalogFile=infiniserv.cat\r
-DriverVer=05/10/2005,3.0.0031.0\r
+DriverVer=07/28/2005,3.0.0034.0\r
 \r
 ; ================= Destination directory section =====================\r
 \r
index a537b77..43ff088 100644 (file)
@@ -30,7 +30,6 @@
  */\r
 \r
 \r
-\r
 /*\r
  * Provides the driver entry points for the ALTS kernel driver.\r
  */\r
@@ -41,6 +40,7 @@
 #include <complib/cl_thread.h>\r
 #include "alts_common.h"\r
 #include "alts_debug.h"\r
+#include <complib/cl_init.h>\r
 \r
 \r
 #if !defined(FILE_DEVICE_INFINIBAND) // Not defined in WXP DDK\r
@@ -133,6 +133,7 @@ DriverEntry(
        IN                              PDRIVER_OBJECT                  p_driver_obj,\r
        IN                              PUNICODE_STRING                 p_registry_path )\r
 {\r
+       NTSTATUS                        status;\r
 #ifdef _DEBUG_\r
        static boolean_t        exit = FALSE;\r
 #endif\r
@@ -150,6 +151,14 @@ DriverEntry(
        }\r
 #endif\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               ALTS_TRACE_EXIT( ALTS_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        p_driver_obj->MajorFunction[IRP_MJ_PNP] = cl_pnp;\r
        p_driver_obj->MajorFunction[IRP_MJ_POWER] = cl_power;\r
 //     p_driver_obj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = alts_ioctl;\r
@@ -170,6 +179,8 @@ alts_drv_unload(
 \r
        UNUSED_PARAM( p_driver_obj );\r
 \r
+       CL_DEINIT;\r
+\r
        ALTS_EXIT( ALTS_DBG_DEV );\r
 }\r
 \r
index 7ab9d34..a7f370d 100644 (file)
@@ -11,7 +11,7 @@ SOURCES= ipoib.rc \
 INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;\r
 \r
 C_DEFINES=$(C_DEFINES) -DNDIS_MINIPORT_DRIVER -DNDIS_WDM=1 \\r
-       -DDEPRECATE_DDK_FUNCTIONS -DNDIS51_MINIPORT\r
+       -DDEPRECATE_DDK_FUNCTIONS -DNDIS51_MINIPORT -DNEED_CL_OBJ -DBINARY_COMPATIBLE=0\r
 \r
 TARGETLIBS= \\r
        $(TARGETPATH)\*\complib.lib \\r
index 276c8e0..d318065 100644 (file)
@@ -35,6 +35,7 @@
 #include "ipoib_port.h"\r
 #include "ipoib_driver.h"\r
 #include "ipoib_debug.h"\r
+#include <complib/cl_init.h>\r
 \r
 \r
 #define ITEM_POOL_START                16\r
@@ -129,9 +130,17 @@ ipoib_create_adapter(
 \r
        IPOIB_ENTER( IPOIB_DBG_INIT );\r
 \r
+       if( !NT_SUCCESS( CL_INIT ) )\r
+       {\r
+               IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR,\r
+                       ("cl_init failed.\n") );\r
+               return IB_ERROR;\r
+       }\r
+\r
        p_adapter = cl_zalloc( sizeof(ipoib_adapter_t) );\r
        if( !p_adapter )\r
        {\r
+               CL_DEINIT;\r
                IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, \r
                        ("Failed to allocate ipoib_adapter_t (%d bytes)",\r
                        sizeof(ipoib_adapter_t)) );\r
@@ -455,6 +464,8 @@ __adapter_free(
 \r
        cl_free( p_adapter );\r
 \r
+       CL_DEINIT;\r
+\r
        IPOIB_EXIT( IPOIB_DBG_INIT );\r
 }\r
 \r
index 6fc3989..42e7e5f 100644 (file)
@@ -16,9 +16,10 @@ INCLUDES=..\..\..\inc;..\..\..\inc\kernel;
 \r
 !if defined(DDK_TARGET_OS) && "$(DDK_TARGET_OS)"=="WinXP"\r
 # storport.h in WinXP DDK already have "..._ALIASES" definition\r
-C_DEFINES=$(C_DEFINES) -DDEPRECATE_DDK_FUNCTIONS -DWinXP\r
+C_DEFINES=$(C_DEFINES) -DDEPRECATE_DDK_FUNCTIONS -DWinXP -DNEED_CL_OBJ\r
 !else\r
-C_DEFINES=$(C_DEFINES) -DDEPRECATE_DDK_FUNCTIONS -DSTOR_USE_SCSI_ALIASES\r
+C_DEFINES=$(C_DEFINES) -DDEPRECATE_DDK_FUNCTIONS -DSTOR_USE_SCSI_ALIASES \\r
+       -DNEED_CL_OBJ\r
 !endif\r
 \r
 TARGETLIBS= \\r
index 448da38..71b7b4b 100644 (file)
@@ -30,8 +30,6 @@
  */\r
 \r
 \r
-\r
-\r
 #include "srp_data.h"\r
 #include "srp_data_path.h"\r
 #include "srp_debug.h"\r
@@ -41,6 +39,7 @@
 \r
 #include <complib/cl_math.h>\r
 #include <complib/cl_mutex.h>\r
+#include <complib/cl_init.h>\r
 \r
 \r
 #define SCSI_MAXIMUM_TRANSFER_SIZE (1024 * 1024)\r
@@ -204,12 +203,20 @@ DriverEntry(
        IN              DRIVER_OBJECT               *p_drv_obj,\r
        IN              UNICODE_STRING              *p_registry_path )\r
 {\r
-       ULONG                       status = (ULONG)STATUS_INSUFFICIENT_RESOURCES;\r
+       ULONG                       status;\r
        HW_INITIALIZATION_DATA      hw_data;\r
        cl_status_t                 cl_status;\r
 \r
        SRP_ENTER( SRP_DBG_PNP );\r
 \r
+       status = CL_INIT;\r
+       if( !NT_SUCCESS(status) )\r
+       {\r
+               SRP_TRACE_EXIT( SRP_DBG_ERROR,\r
+                       ("cl_init returned %08X.\n", status) );\r
+               return status;\r
+       }\r
+\r
        gp_drv_obj = p_drv_obj;\r
 \r
        cl_obj_construct( &g_drv_obj, SRP_OBJ_TYPE_DRV );\r
@@ -271,10 +278,16 @@ DriverEntry(
                }\r
                else\r
                {\r
+                       CL_DEINIT;\r
                        SRP_TRACE( SRP_DBG_ERROR,\r
                                ("StorPortInitialize returned 0x%x.\n", status) );\r
                }\r
        }\r
+       else\r
+       {\r
+               CL_DEINIT;\r
+               status = (ULONG)STATUS_INSUFFICIENT_RESOURCES;\r
+       }\r
 \r
        SRP_TRACE_EXIT( SRP_DBG_PNP, ("DriverEntry returning status of 0x%x.\n", status) );\r
        return status;\r
@@ -291,6 +304,8 @@ srp_unload(
        SRP_TRACE( SRP_DBG_VERBOSE, ("Driver Object ref_cnt = %d\n", g_drv_obj.ref_cnt) );\r
        cl_obj_destroy( &g_drv_obj );\r
 \r
+       CL_DEINIT;\r
+\r
        /* Invoke the port driver's unload routine. */\r
        SRP_TRACE( SRP_DBG_DEBUG, ("Invoking the port driver's unload routine.\n") );\r
        gpfn_unload( p_drv_obj );\r