X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-defer.h;fp=urcu-defer.h;h=456b8b7ff9bcbc635731cca576a609dc6de8c289;hp=0000000000000000000000000000000000000000;hb=786ee85b1676d2a1865b2db7120c45bafdf954d6;hpb=983e806feba6adf1dd07318fe97e6e8d2255a626 diff --git a/urcu-defer.h b/urcu-defer.h new file mode 100644 index 0000000..456b8b7 --- /dev/null +++ b/urcu-defer.h @@ -0,0 +1,72 @@ +#ifndef _URCU_BATCH_H +#define _URCU_BATCH_H + +/* + * urcu-defer.h + * + * Userspace RCU header - deferred execution + * + * Copyright (c) 2009 Mathieu Desnoyers + * Copyright (c) 2009 Paul E. McKenney, IBM Corporation. + * + * LGPL-compatible code should include this header with : + * + * #define _LGPL_SOURCE + * #include + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +/* + * Important ! + * + * Each thread queuing memory reclamation must be registered with + * rcu_defer_register_thread(). rcu_defer_unregister_thread() should be + * called before the thread exits. + */ + +#ifdef _LGPL_SOURCE + +#include + +/* + * Mappings for static use of the userspace RCU library. + * Should only be used in LGPL-compatible code. + */ + +#define rcu_defer_queue _rcu_defer_queue + +#else /* !_LGPL_SOURCE */ + +/* + * library wrappers to be used by non-LGPL compatible source code. + */ + +extern void rcu_defer_queue(void *p); + +#endif /* !_LGPL_SOURCE */ + +/* + * Thread registration for reclamation. + */ +extern void rcu_defer_register_thread(void); +extern void rcu_defer_unregister_thread(void); +extern void rcu_defer_barrier(void); +extern void rcu_defer_barrier_thread(void); + +#endif /* _URCU_BATCH_H */