Re: [lttng-dev] [PATCH] lttng-gen-tp: Allow generation from templates in subdirectories

2012-09-03 Thread Mathieu Desnoyers
* Shawn Bohrer (sboh...@rgmadvisors.com) wrote:
 If a template is located in a subdirectory as is common in large
 software projects then the include guard will contain forward slash
 characters which are not allowed.  This replaces those characters with
 an underscore.  Additional the include guards previously started with
 an underscore and capital letter which is reserved thus this
 additionally removes the leading underscore.

[for lttng-tools]

Acked-by: Mathieu Desnoyers mathieu.desnoy...@efficios.com

 
 Fixes: #298
 
 Signed-off-by: Shawn Bohrer sboh...@rgmadvisors.com
 ---
  tools/lttng-gen-tp |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
 index d54559a..8cd3191 100755
 --- a/tools/lttng-gen-tp
 +++ b/tools/lttng-gen-tp
 @@ -61,7 +61,7 @@ extern C{{
  
  def write(self):
  outputFile = open(self.outputFilename,w)
 -includeGuard = _+self.outputFilename.upper().replace(.,_)
 +includeGuard = 
 self.outputFilename.upper().replace(.,_).replace(/,_)
  
  
 outputFile.write(HeaderFile.HEADER_TPL.format(providerName=self.template.domain,
 includeGuard = includeGuard,
 -- 
 1.7.7.6
 
 
 -- 
 
 ---
 This email, along with any attachments, is confidential. If you 
 believe you received this message in error, please contact the 
 sender immediately and delete all copies of the message.  
 Thank you.
 
 ___
 lttng-dev mailing list
 lttng-dev@lists.lttng.org
 http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
Operating System Efficiency RD Consultant
EfficiOS Inc.
http://www.efficios.com

___
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


Re: [lttng-dev] [PATCH] Ensure that read-side functions meet 10-line LGPL criterion

2012-09-03 Thread Mathieu Desnoyers
* Paul E. McKenney (paul...@linux.vnet.ibm.com) wrote:
 This commit ensures that all read-side functions meet the 10-line LGPL
 criterion that permits them to be expanded directly into non-LGPL code,
 without function-call instructions.  It also documents this as the intent.
 
 Signed-off-by: Paul E. McKenney paul...@linux.vnet.ibm.com
 
 diff --git a/urcu/static/urcu-bp.h b/urcu/static/urcu-bp.h
 index e7b2eda..881b4a4 100644
 --- a/urcu/static/urcu-bp.h
 +++ b/urcu/static/urcu-bp.h
 @@ -6,8 +6,8 @@
   *
   * Userspace RCU header.
   *
 - * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking
 - * dynamically with the userspace rcu library.
 + * TO BE INCLUDED ONLY IN CODE THAT IS TO BE RECOMPILED ON EACH LIBURCU
 + * RELEASE. See urcu.h for linking dynamically with the userspace rcu 
 library.
   *
   * Copyright (c) 2009 Mathieu Desnoyers mathieu.desnoy...@efficios.com
   * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
 @@ -162,32 +162,48 @@ static inline int rcu_old_gp_ongoing(long *value)
((v ^ rcu_gp_ctr)  RCU_GP_CTR_PHASE);
  }
  
 +/*
 + * Helper for _rcu_read_lock().  The format of rcu_gp_ctr (as well as
 + * the per-thread rcu_reader.ctr) has the upper bits containing a count of
 + * _rcu_read_lock() nesting, and a lower-order bit that contains either zero
 + * or RCU_GP_CTR_PHASE.  The smp_mb_slave() ensures that the accesses in
 + * _rcu_read_lock() happen before the subsequent read-side critical section.
 + */
 +static inline void _rcu_read_lock_help(unsigned long tmp)

could we rename the _rcu_read_lock_help to _rcu_read_lock_update ?

I think it would fit better the role of this function in the algorithm.

As Josh pointed out, directloy - directly below,

The rest looks good. I'll wait for an updated version.

Thanks !

Mathieu

 +{
 + if (caa_likely(!(tmp  RCU_GP_CTR_NEST_MASK))) {
 + _CMM_STORE_SHARED(URCU_TLS(rcu_reader)-ctr, 
 _CMM_LOAD_SHARED(rcu_gp_ctr));
 + cmm_smp_mb();
 + } else
 + _CMM_STORE_SHARED(URCU_TLS(rcu_reader)-ctr, tmp + 
 RCU_GP_COUNT);
 +}
 +
 +/*
 + * Enter an RCU read-side critical section.
 + *
 + * The first cmm_barrier() call ensures that the compiler does not reorder
 + * the body of _rcu_read_lock() with a mutex.
 + *
 + * This function and its helper are both less than 10 lines long.  The
 + * intent is that this function meets the 10-line criterion in LGPL,
 + * allowing this function to be invoked directly from non-LGPL code.
 + */
  static inline void _rcu_read_lock(void)
  {
   long tmp;
  
 - /* Check if registered */
   if (caa_unlikely(!URCU_TLS(rcu_reader)))
 - rcu_bp_register();
 -
 + rcu_bp_register(); /* If not yet registered. */
   cmm_barrier();  /* Ensure the compiler does not reorder us with mutex */
   tmp = URCU_TLS(rcu_reader)-ctr;
 - /*
 -  * rcu_gp_ctr is
 -  *   RCU_GP_COUNT | (~RCU_GP_CTR_PHASE or RCU_GP_CTR_PHASE)
 -  */
 - if (caa_likely(!(tmp  RCU_GP_CTR_NEST_MASK))) {
 - _CMM_STORE_SHARED(URCU_TLS(rcu_reader)-ctr, 
 _CMM_LOAD_SHARED(rcu_gp_ctr));
 - /*
 -  * Set active readers count for outermost nesting level before
 -  * accessing the pointer.
 -  */
 - cmm_smp_mb();
 - } else {
 - _CMM_STORE_SHARED(URCU_TLS(rcu_reader)-ctr, tmp + 
 RCU_GP_COUNT);
 - }
 + _rcu_read_lock_help(tmp);
  }
  
 +/*
 + * Exit an RCU read-side critical section.  This function is less than
 + * 10 lines of code, and is intended to be usable by non-LGPL code, as
 + * called out in LGPL.
 + */
  static inline void _rcu_read_unlock(void)
  {
   /*
 diff --git a/urcu/static/urcu-pointer.h b/urcu/static/urcu-pointer.h
 index 48dc5bf..0ddf6a1 100644
 --- a/urcu/static/urcu-pointer.h
 +++ b/urcu/static/urcu-pointer.h
 @@ -6,8 +6,8 @@
   *
   * Userspace RCU header. Operations on pointers.
   *
 - * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu-pointer.h for
 - * linking dynamically with the userspace rcu library.
 + * TO BE INCLUDED ONLY IN CODE THAT IS TO BE RECOMPILED ON EACH LIBURCU
 + * RELEASE. See urcu.h for linking dynamically with the userspace rcu 
 library.
   *
   * Copyright (c) 2009 Mathieu Desnoyers mathieu.desnoy...@efficios.com
   * Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
 @@ -59,8 +59,11 @@ extern C {
   * addition to forthcoming C++ standard.
   *
   * Should match rcu_assign_pointer() or rcu_xchg_pointer().
 + *
 + * This macro is less than 10 lines long.  The intent is that this macro
 + * meets the 10-line criterion in LGPL, allowing this function to be
 + * expanded directloy in non-LGPL code.
   */
 -
  #define _rcu_dereference(p) ({   \
   __typeof__(p) _p1 = CMM_LOAD_SHARED(p); 
 \
   cmm_smp_read_barrier_depends(); \
 @@ -73,8 +76,11 @@ extern C {
   * data structure,