[Openib-windows] [PATCH] cl_qlockpool.h

Yael Kalka eitan at mtl001.openib.org
Mon Sep 5 00:52:23 PDT 2005


Hello Fab,

Attached is the cl_qlockpool.h as a patch to the existing file in inc/complib/,
the patch also includes the removal of cl_qlockpool.c file from core/complib/user/.

Thanks,
Yael

Signed-off-by:  Yael Kalka <yael at mellanox.co.il>

Index: core/complib/user/cl_qlockpool.c
===================================================================
--- core/complib/user/cl_qlockpool.c	(revision 339)
+++ core/complib/user/cl_qlockpool.c	(working copy)
@@ -1,171 +0,0 @@
-/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-  This software program is available to you under a choice of one of two
-  licenses.  You may choose to be licensed under either the GNU General Public
-  License (GPL) Version 2, June 1991, available at
-  http://www.fsf.org/copyleft/gpl.html, or the Intel BSD + Patent License,
-  the text of which follows:
-
-  "Recipient" has requested a license and Intel Corporation ("Intel")
-  is willing to grant a license for the software entitled
-  InfiniBand(tm) System Software (the "Software") being provided by
-  Intel Corporation.
-
-  The following definitions apply to this License:
-
-  "Licensed Patents" means patent claims licensable by Intel Corporation which
-  are necessarily infringed by the use or sale of the Software alone or when
-  combined with the operating system referred to below.
-
-  "Recipient" means the party to whom Intel delivers this Software.
-  "Licensee" means Recipient and those third parties that receive a license to
-  any operating system available under the GNU Public License version 2.0 or
-  later.
-
-  Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
-
-  The license is provided to Recipient and Recipient's Licensees under the
-  following terms. 
-
-  Redistribution and use in source and binary forms of the Software, with or
-  without modification, are permitted provided that the following
-  conditions are met:
-  Redistributions of source code of the Software may retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-
-  Redistributions in binary form of the Software may reproduce the above
-  copyright notice, this list of conditions and the following disclaimer in the
-  documentation and/or other materials provided with the distribution.
-
-  Neither the name of Intel Corporation nor the names of its contributors shall
-  be used to endorse or promote products derived from this Software without
-  specific prior written permission.
-
-  Intel hereby grants Recipient and Licensees a non-exclusive, worldwide,
-  royalty-free patent license under Licensed Patents to make, use, sell, offer
-  to sell, import and otherwise transfer the Software, if any, in source code
-  and object code form. This license shall include changes to the Software that
-  are error corrections or other minor changes to the Software that do not add
-  functionality or features when the Software is incorporated in any version of
-  a operating system that has been distributed under the GNU General Public
-  License 2.0 or later.  This patent license shall apply to the combination of
-  the Software and any operating system licensed under the GNU Public License
-  version 2.0 or later if, at the time Intel provides the Software to
-  Recipient, such addition of the Software to the then publicly
-  available versions of such operating system available under the GNU
-  Public License version 2.0 or later (whether in gold, beta or alpha
-  form) causes such combination to be covered by the Licensed
-  Patents. The patent license shall not apply to any other
-  combinations which include the Software. No hardware per se is
-  licensed hereunder.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS CONTRIBUTORS
-  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-  OF SUBSTITUTE GOODS OR SERVICES; 
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE. 
-  --------------------------------------------------------------------------*/
-
-/*
- * Abstract:
- *	Implementation of cl_qlock_pool_t.
- *	This object represents a threadsafe quick-pool of objects.
- *
- * Environment:
- *	All
- *
- * $Revision: 1.3 $
- */
-
-#include <complib/cl_qlockpool.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-cl_qlock_pool_construct(
-	IN cl_qlock_pool_t* const p_pool )
-{
-	cl_qpool_construct( &p_pool->pool );
-	cl_spinlock_construct( &p_pool->lock );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-cl_qlock_pool_destroy(
-	IN cl_qlock_pool_t* const p_pool )
-{
-	/*
-		If the pool has already been put into use, grab the lock
-		to sync with other threads before we blow everything away.
-	*/
-	if( cl_is_qpool_inited( &p_pool->pool ) )
-	{
-		cl_spinlock_acquire( &p_pool->lock );
-		cl_qpool_destroy( &p_pool->pool );
-		cl_spinlock_release( &p_pool->lock );
-	}
-	else
-		cl_qpool_destroy( &p_pool->pool );
-
-	cl_spinlock_destroy( &p_pool->lock );
-}
-
-/**********************************************************************
- **********************************************************************/
-cl_status_t
-cl_qlock_pool_init(
-	IN cl_qlock_pool_t*			const p_pool,
-	IN	const size_t			min_size,
-	IN	const size_t			max_size,
-	IN	const size_t			grow_size,
-	IN	const size_t			object_size,
-	IN	cl_pfn_qpool_init_t		pfn_initializer OPTIONAL,
-	IN	cl_pfn_qpool_dtor_t		pfn_destructor OPTIONAL,
-	IN	const void* const		context )
-{
-	cl_status_t status;
-
-	cl_qlock_pool_construct( p_pool );
-
-	status = cl_spinlock_init( &p_pool->lock );
-	if( status )
-		return( status );
-
-	status = cl_qpool_init( &p_pool->pool, min_size, max_size, grow_size,
-			object_size, pfn_initializer, pfn_destructor, context );
-
-	return( status );
-}
-
-/**********************************************************************
- **********************************************************************/
-cl_pool_item_t*
-cl_qlock_pool_get(
-	IN cl_qlock_pool_t* const p_pool )
-{
-	cl_pool_item_t* p_item;
-	cl_spinlock_acquire( &p_pool->lock );
-	p_item = cl_qpool_get( &p_pool->pool );
-	cl_spinlock_release( &p_pool->lock );
-	return( p_item );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-cl_qlock_pool_put(
-	IN cl_qlock_pool_t* const p_pool,
-	IN cl_pool_item_t* const p_item )
-{
-	cl_spinlock_acquire( &p_pool->lock );
-	cl_qpool_put( &p_pool->pool, p_item );
-	cl_spinlock_release( &p_pool->lock );
-}
-
Index: inc/complib/cl_qlockpool.h
===================================================================
--- inc/complib/cl_qlockpool.h	(revision 341)
+++ inc/complib/cl_qlockpool.h	(working copy)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.
+ * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. 
  *
  * This software is available to you under the OpenIB.org BSD license
@@ -38,15 +39,25 @@
  *
  * Environment:
  *	All
+ *
+ * $Revision: 1.3 $
  */
 
 #ifndef _CL_QLOCKPOOL_H_
 #define _CL_QLOCKPOOL_H_
 
-
 #include <complib/cl_qpool.h>
 #include <complib/cl_spinlock.h>
 
+#ifdef __cplusplus
+#  define BEGIN_C_DECLS extern "C" {
+#  define END_C_DECLS   }
+#else /* !__cplusplus */
+#  define BEGIN_C_DECLS
+#  define END_C_DECLS
+#endif /* __cplusplus */
+
+BEGIN_C_DECLS
 
 /****h* Component Library/Quick Locking Pool
 * NAME
@@ -101,12 +112,6 @@ typedef struct _cl_qlock_pool
 *********/
 
 
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
 /****f* Component Library: Quick Locking Pool/cl_qlock_pool_construct
 * NAME
 *	cl_qlock_pool_construct
@@ -116,9 +121,14 @@ extern "C"
 *
 * SYNOPSIS
 */
-CL_EXPORT void CL_API
+static inline void
 cl_qlock_pool_construct(
-	IN cl_qlock_pool_t* const p_pool );
+	IN cl_qlock_pool_t* const p_pool )
+{
+	cl_qpool_construct( &p_pool->pool );
+	cl_spinlock_construct( &p_pool->lock );
+}
+
 /*
 * PARAMETERS
 *	p_pool
@@ -148,9 +158,25 @@ cl_qlock_pool_construct(
 *
 * SYNOPSIS
 */
-CL_EXPORT void CL_API
+static inline void
 cl_qlock_pool_destroy(
-	IN cl_qlock_pool_t* const p_pool );
+	IN cl_qlock_pool_t* const p_pool )
+{
+	/*
+		If the pool has already been put into use, grab the lock
+		to sync with other threads before we blow everything away.
+	*/
+	if( cl_is_qpool_inited( &p_pool->pool ) )
+	{
+		cl_spinlock_acquire( &p_pool->lock );
+		cl_qpool_destroy( &p_pool->pool );
+		cl_spinlock_release( &p_pool->lock );
+	}
+	else
+		cl_qpool_destroy( &p_pool->pool );
+
+	cl_spinlock_destroy( &p_pool->lock );
+}
 /*
 * PARAMETERS
 *	p_pool
@@ -179,7 +205,7 @@ cl_qlock_pool_destroy(
 *
 * SYNOPSIS
 */
-CL_EXPORT cl_status_t CL_API
+static inline cl_status_t
 cl_qlock_pool_init(
 	IN cl_qlock_pool_t*			const p_pool,
 	IN	const size_t			min_size,
@@ -188,7 +214,21 @@ cl_qlock_pool_init(
 	IN	const size_t			object_size,
 	IN	cl_pfn_qpool_init_t		pfn_initializer OPTIONAL,
 	IN	cl_pfn_qpool_dtor_t		pfn_destructor OPTIONAL,
-	IN	const void* const		context );
+	IN	const void* const		context )
+{
+	cl_status_t status;
+
+	cl_qlock_pool_construct( p_pool );
+
+	status = cl_spinlock_init( &p_pool->lock );
+	if( status )
+		return( status );
+
+	status = cl_qpool_init( &p_pool->pool, min_size, max_size, grow_size,
+			object_size, pfn_initializer, pfn_destructor, context );
+
+	return( status );
+}
 /*
 * PARAMETERS
 *	p_pool
@@ -256,9 +296,17 @@ cl_qlock_pool_init(
 *
 * SYNOPSIS
 */
-CL_EXPORT cl_pool_item_t* CL_API
+static inline cl_pool_item_t*
 cl_qlock_pool_get(
-	IN cl_qlock_pool_t* const p_pool );
+	IN cl_qlock_pool_t* const p_pool )
+{
+	cl_pool_item_t* p_item;
+	cl_spinlock_acquire( &p_pool->lock );
+	p_item = cl_qpool_get( &p_pool->pool );
+	cl_spinlock_release( &p_pool->lock );
+	return( p_item );
+}
+
 /*
 * PARAMETERS
 *	p_pool
@@ -288,10 +336,15 @@ cl_qlock_pool_get(
 *
 * SYNOPSIS
 */
-CL_EXPORT void CL_API
+static inline void
 cl_qlock_pool_put(
 	IN cl_qlock_pool_t* const p_pool,
-	IN cl_pool_item_t* const p_item );
+	IN cl_pool_item_t* const p_item )
+{
+	cl_spinlock_acquire( &p_pool->lock );
+	cl_qpool_put( &p_pool->pool, p_item );
+	cl_spinlock_release( &p_pool->lock );
+}
 /*
 * PARAMETERS
 *	p_pool
@@ -313,8 +366,6 @@ cl_qlock_pool_put(
 *********/
 
 
-#ifdef __cplusplus
-}	/* extern "C" */
-#endif
+END_C_DECLS
 
 #endif	/* _CL_QLOCKPOOL_H_ */




More information about the ofw mailing list