[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