arch.h   arch.h 
#ifndef _URCU_ARCH_X86_H #ifndef _URCU_ARCH_X86_H
#define _URCU_ARCH_X86_H #define _URCU_ARCH_X86_H
/* /*
* arch_x86.h: trivial definitions for the x86 architecture. * arch_x86.h: trivial definitions for the x86 architecture.
* *
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
skipping to change at line 50 skipping to change at line 50
* Some non-Intel clones support out of order store. wmb() ceases to be a * Some non-Intel clones support out of order store. wmb() ceases to be a
* nop for these. * nop for these.
*/ */
#define mb() asm volatile("lock; addl $0,0(%%esp)":::"memory") #define mb() asm volatile("lock; addl $0,0(%%esp)":::"memory")
#define rmb() asm volatile("lock; addl $0,0(%%esp)":::"memory") #define rmb() asm volatile("lock; addl $0,0(%%esp)":::"memory")
#define wmb() asm volatile("lock; addl $0,0(%%esp)"::: "memory") #define wmb() asm volatile("lock; addl $0,0(%%esp)"::: "memory")
#endif #endif
#define cpu_relax() asm volatile("rep; nop" : : : "memory"); #define cpu_relax() asm volatile("rep; nop" : : : "memory");
/*
* Serialize core instruction execution. Also acts as a compiler barrier.
* On PIC ebx cannot be clobbered
*/
#ifdef __PIC__
#define sync_core() \
asm volatile("push %%ebx; cpuid; pop %%ebx" \
: : : "memory", "eax", "ecx", "edx");
#endif
#ifndef __PIC__
#define sync_core() \
asm volatile("cpuid" : : : "memory", "eax", "ebx", "ecx", "edx");
#endif
#define rdtscll(val) \ #define rdtscll(val) \
do { \ do { \
unsigned int __a, __d; \ unsigned int __a, __d; \
asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); \ asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); \
(val) = ((unsigned long long)__a) \ (val) = ((unsigned long long)__a) \
| (((unsigned long long)__d) << 32); \ | (((unsigned long long)__d) << 32); \
} while(0) } while(0)
typedef unsigned long long cycles_t; typedef unsigned long long cycles_t;
 End of changes. 2 change blocks. 
15 lines changed or deleted 1 lines changed or added


 arch_generic.h   arch_generic.h 
skipping to change at line 124 skipping to change at line 124
#define smp_mc() barrier() #define smp_mc() barrier()
#define smp_rmc() barrier() #define smp_rmc() barrier()
#define smp_wmc() barrier() #define smp_wmc() barrier()
#define smp_read_barrier_depends() #define smp_read_barrier_depends()
#endif #endif
#ifndef cpu_relax #ifndef cpu_relax
#define cpu_relax() barrier() #define cpu_relax() barrier()
#endif #endif
#ifndef sync_core
#define sync_core() mb()
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _URCU_ARCH_GENERIC_H */ #endif /* _URCU_ARCH_GENERIC_H */
 End of changes. 1 change blocks. 
4 lines changed or deleted 0 lines changed or added


 compiler.h   compiler.h 
#ifndef _URCU_COMPILER_H #ifndef _URCU_COMPILER_H
#define _URCU_COMPILER_H #define _URCU_COMPILER_H
/* /*
* compiler.h * compiler.h
* *
* Compiler definitions. * Compiler definitions.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* *
* THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
* OR IMPLIED. ANY USE IS AT YOUR OWN RISK. * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
* *
* Permission is hereby granted to use or copy this program * Permission is hereby granted to use or copy this program
* for any purpose, provided the above notices are retained on all copies. * for any purpose, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted , * Permission to modify the code and to distribute modified code is granted ,
* provided the above notices are retained, and a notice that the code was * provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice. * modified is included with the above copyright notice.
*/ */
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 system.h   system.h 
#ifndef _URCU_SYSTEM_H #ifndef _URCU_SYSTEM_H
#define _URCU_SYSTEM_H #define _URCU_SYSTEM_H
/* /*
* system.h * system.h
* *
* System definitions. * System definitions.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* *
* THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
* OR IMPLIED. ANY USE IS AT YOUR OWN RISK. * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
* *
* Permission is hereby granted to use or copy this program * Permission is hereby granted to use or copy this program
* for any purpose, provided the above notices are retained on all copies. * for any purpose, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted , * Permission to modify the code and to distribute modified code is granted ,
* provided the above notices are retained, and a notice that the code was * provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice. * modified is included with the above copyright notice.
*/ */
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-bp-static.h   urcu-bp-static.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_BP_STATIC_H #define _URCU_BP_STATIC_H
/* /*
* urcu-bp-static.h * urcu-bp-static.h
* *
* Userspace RCU header. * Userspace RCU header.
* *
* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking
* dynamically with the userspace rcu library. * dynamically with the userspace rcu library.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-bp.h   urcu-bp.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_BP_H #define _URCU_BP_H
/* /*
* urcu-bp.h * urcu-bp.h
* *
* Userspace RCU header, "bulletproof" version. * Userspace RCU header, "bulletproof" version.
* *
* Slower RCU read-side adapted for tracing library. Does not require threa d * Slower RCU read-side adapted for tracing library. Does not require threa d
* registration nor unregistration. Also signal-safe. * registration nor unregistration. Also signal-safe.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* LGPL-compatible code should include this header with : * LGPL-compatible code should include this header with :
* *
* #define _LGPL_SOURCE * #define _LGPL_SOURCE
* #include <urcu.h> * #include <urcu.h>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-defer-static.h   urcu-defer-static.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_DEFER_STATIC_H #define _URCU_DEFER_STATIC_H
/* /*
* urcu-defer-static.h * urcu-defer-static.h
* *
* Userspace RCU header - memory reclamation. * Userspace RCU header - memory reclamation.
* *
* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-defer.h for linkin g * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-defer.h for linkin g
* dynamically with the userspace rcu reclamation library. * dynamically with the userspace rcu reclamation library.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-defer.h   urcu-defer.h 
#ifndef _URCU_BATCH_H #ifndef _URCU_BATCH_H
#define _URCU_BATCH_H #define _URCU_BATCH_H
/* /*
* urcu-defer.h * urcu-defer.h
* *
* Userspace RCU header - deferred execution * Userspace RCU header - deferred execution
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* LGPL-compatible code should include this header with : * LGPL-compatible code should include this header with :
* *
* #define _LGPL_SOURCE * #define _LGPL_SOURCE
* #include <urcu-defer.h> * #include <urcu-defer.h>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-pointer-static.h   urcu-pointer-static.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_POINTER_STATIC_H #define _URCU_POINTER_STATIC_H
/* /*
* urcu-pointer-static.h * urcu-pointer-static.h
* *
* Userspace RCU header. Operations on pointers. * Userspace RCU header. Operations on pointers.
* *
* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-pointer.h for * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-pointer.h for
* linking dynamically with the userspace rcu library. * linking dynamically with the userspace rcu library.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-pointer.h   urcu-pointer.h 
#ifndef _URCU_POINTER_H #ifndef _URCU_POINTER_H
#define _URCU_POINTER_H #define _URCU_POINTER_H
/* /*
* urcu-pointer.h * urcu-pointer.h
* *
* Userspace RCU header. Operations on pointers. * Userspace RCU header. Operations on pointers.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-qsbr-static.h   urcu-qsbr-static.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_QSBR_STATIC_H #define _URCU_QSBR_STATIC_H
/* /*
* urcu-qsbr-static.h * urcu-qsbr-static.h
* *
* Userspace RCU QSBR header. * Userspace RCU QSBR header.
* *
* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-qsbr.h for linking * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-qsbr.h for linking
* dynamically with the userspace rcu QSBR library. * dynamically with the userspace rcu QSBR library.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu-static.h   urcu-static.h 
skipping to change at line 12 skipping to change at line 12
#define _URCU_STATIC_H #define _URCU_STATIC_H
/* /*
* urcu-static.h * urcu-static.h
* *
* Userspace RCU header. * Userspace RCU header.
* *
* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking
* dynamically with the userspace rcu library. * dynamically with the userspace rcu library.
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 urcu.h   urcu.h 
#ifndef _URCU_H #ifndef _URCU_H
#define _URCU_H #define _URCU_H
/* /*
* urcu.h * urcu.h
* *
* Userspace RCU header * Userspace RCU header
* *
* Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
* *
* LGPL-compatible code should include this header with : * LGPL-compatible code should include this header with :
* *
* #define _LGPL_SOURCE * #define _LGPL_SOURCE
* #include <urcu.h> * #include <urcu.h>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/