Ping.

> -----Original Message-----
> From: ext Petri Savolainen [mailto:[email protected]]
> Sent: Friday, October 31, 2014 3:40 PM
> To: [email protected]
> Cc: Petri Savolainen
> Subject: [PATCH] Removed odp_atomic_int_t
> 
> Integer version is not needed. Unsigned 32 and 64 bit atomics
> are used instead. If signed 32/64 bits can be added later
> on need basis.
> 
> Signed-off-by: Petri Savolainen <[email protected]>
> ---
>  platform/linux-generic/include/api/odp_atomic.h    | 115 ----------------
> -----
>  platform/linux-generic/include/api/odp_barrier.h   |   4 +-
>  .../linux-generic/include/odp_buffer_internal.h    |   2 +-
>  platform/linux-generic/odp_barrier.c               |   6 +-
>  platform/linux-generic/odp_thread.c                |   6 +-
>  test/api_test/odp_atomic_test.c                    |  80 ++------------
>  test/api_test/odp_atomic_test.h                    |   9 --
>  7 files changed, 16 insertions(+), 206 deletions(-)
> 
> diff --git a/platform/linux-generic/include/api/odp_atomic.h
> b/platform/linux-generic/include/api/odp_atomic.h
> index 213c81f..5c83b39 100644
> --- a/platform/linux-generic/include/api/odp_atomic.h
> +++ b/platform/linux-generic/include/api/odp_atomic.h
> @@ -26,10 +26,6 @@ extern "C" {
>   *  @{
>   */
> 
> -/**
> - * Atomic integer
> - */
> -typedef volatile int32_t odp_atomic_int_t;
> 
>  /**
>   * Atomic unsigned integer 64 bits
> @@ -43,117 +39,6 @@ typedef volatile uint32_t odp_atomic_u32_t;
> 
> 
>  /**
> - * Initialize atomic integer
> - *
> - * @param ptr    An integer atomic variable
> - *
> - * @note The operation is not synchronized with other threads
> - */
> -static inline void odp_atomic_init_int(odp_atomic_int_t *ptr)
> -{
> -     *ptr = 0;
> -}
> -
> -/**
> - * Load value of atomic integer
> - *
> - * @param ptr    An atomic variable
> - *
> - * @return atomic integer value
> - *
> - * @note The operation is not synchronized with other threads
> - */
> -static inline int odp_atomic_load_int(odp_atomic_int_t *ptr)
> -{
> -     return *ptr;
> -}
> -
> -/**
> - * Store value to atomic integer
> - *
> - * @param ptr        An atomic variable
> - * @param new_value  Store new_value to a variable
> - *
> - * @note The operation is not synchronized with other threads
> - */
> -static inline void odp_atomic_store_int(odp_atomic_int_t *ptr, int
> new_value)
> -{
> -     *ptr = new_value;
> -}
> -
> -/**
> - * Fetch and add atomic integer
> - *
> - * @param ptr    An atomic variable
> - * @param value  A value to be added to the variable
> - *
> - * @return Value of the variable before the operation
> - */
> -static inline int odp_atomic_fetch_add_int(odp_atomic_int_t *ptr, int
> value)
> -{
> -     return __sync_fetch_and_add(ptr, value);
> -}
> -
> -/**
> - * Fetch and subtract atomic integer
> - *
> - * @param ptr    An atomic integer variable
> - * @param value  A value to be subtracted from the variable
> - *
> - * @return Value of the variable before the operation
> - */
> -static inline int odp_atomic_fetch_sub_int(odp_atomic_int_t *ptr, int
> value)
> -{
> -     return __sync_fetch_and_sub(ptr, value);
> -}
> -
> -/**
> - * Fetch and increment atomic integer by 1
> - *
> - * @param ptr    An atomic variable
> - *
> - * @return Value of the variable before the operation
> - */
> -static inline int odp_atomic_fetch_inc_int(odp_atomic_int_t *ptr)
> -{
> -     return odp_atomic_fetch_add_int(ptr, 1);
> -}
> -
> -/**
> - * Increment atomic integer by 1
> - *
> - * @param ptr    An atomic variable
> - *
> - */
> -static inline void odp_atomic_inc_int(odp_atomic_int_t *ptr)
> -{
> -     odp_atomic_fetch_add_int(ptr, 1);
> -}
> -
> -/**
> - * Fetch and decrement atomic integer by 1
> - *
> - * @param ptr    An atomic int variable
> - *
> - * @return Value of the variable before the operation
> - */
> -static inline int odp_atomic_fetch_dec_int(odp_atomic_int_t *ptr)
> -{
> -     return odp_atomic_fetch_sub_int(ptr, 1);
> -}
> -
> -/**
> - * Decrement atomic integer by 1
> - *
> - * @param ptr    An atomic variable
> - *
> - */
> -static inline void odp_atomic_dec_int(odp_atomic_int_t *ptr)
> -{
> -     odp_atomic_fetch_sub_int(ptr, 1);
> -}
> -
> -/**
>   * Initialize atomic uint32
>   *
>   * @param ptr    An atomic variable
> diff --git a/platform/linux-generic/include/api/odp_barrier.h
> b/platform/linux-generic/include/api/odp_barrier.h
> index 866648f..fb02a9d 100644
> --- a/platform/linux-generic/include/api/odp_barrier.h
> +++ b/platform/linux-generic/include/api/odp_barrier.h
> @@ -31,8 +31,8 @@ extern "C" {
>   * ODP execution barrier
>   */
>  typedef struct odp_barrier_t {
> -     int              count;  /**< @private Thread count */
> -     odp_atomic_int_t bar;    /**< @private Barrier counter */
> +     uint32_t         count;  /**< @private Thread count */
> +     odp_atomic_u32_t bar;    /**< @private Barrier counter */
>  } odp_barrier_t;
> 
> 
> diff --git a/platform/linux-generic/include/odp_buffer_internal.h
> b/platform/linux-generic/include/odp_buffer_internal.h
> index 2002b51..0027bfc 100644
> --- a/platform/linux-generic/include/odp_buffer_internal.h
> +++ b/platform/linux-generic/include/odp_buffer_internal.h
> @@ -88,7 +88,7 @@ typedef struct odp_buffer_hdr_t {
>       uint32_t                 index;      /* buf index in the pool */
>       size_t                   size;       /* max data size */
>       size_t                   cur_offset; /* current offset */
> -     odp_atomic_int_t         ref_count;  /* reference count */
> +     odp_atomic_u32_t         ref_count;  /* reference count */
>       odp_buffer_scatter_t     scatter;    /* Scatter/gather list */
>       int                      type;       /* type of next header */
>       odp_buffer_pool_t        pool_hdl;   /* buffer pool handle */
> diff --git a/platform/linux-generic/odp_barrier.c b/platform/linux-
> generic/odp_barrier.c
> index a82b294..f4a87c8 100644
> --- a/platform/linux-generic/odp_barrier.c
> +++ b/platform/linux-generic/odp_barrier.c
> @@ -11,7 +11,7 @@
>  void odp_barrier_init_count(odp_barrier_t *barrier, int count)
>  {
>       barrier->count = count;
> -     barrier->bar = 0;
> +     barrier->bar   = 0;
>       odp_sync_stores();
>  }
> 
> @@ -30,12 +30,12 @@ void odp_barrier_init_count(odp_barrier_t *barrier,
> int count)
> 
>  void odp_barrier_sync(odp_barrier_t *barrier)
>  {
> -     int count;
> +     uint32_t count;
>       int wasless;
> 
>       odp_sync_stores();
>       wasless = barrier->bar < barrier->count;
> -     count = odp_atomic_fetch_inc_int(&barrier->bar);
> +     count   = odp_atomic_fetch_inc_u32(&barrier->bar);
> 
>       if (count == 2*barrier->count-1) {
>               barrier->bar = 0;
> diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-
> generic/odp_thread.c
> index b869b27..dcb893d 100644
> --- a/platform/linux-generic/odp_thread.c
> +++ b/platform/linux-generic/odp_thread.c
> @@ -31,7 +31,7 @@ typedef struct {
> 
>  typedef struct {
>       thread_state_t   thr[ODP_CONFIG_MAX_THREADS];
> -     odp_atomic_int_t num;
> +     odp_atomic_u32_t num;
> 
>  } thread_globals_t;
> 
> @@ -64,10 +64,10 @@ int odp_thread_init_global(void)
> 
>  static int thread_id(void)
>  {
> -     int id;
> +     uint32_t id;
>       int cpu;
> 
> -     id = odp_atomic_fetch_add_int(&thread_globals->num, 1);
> +     id = odp_atomic_fetch_inc_u32(&thread_globals->num);
> 
>       if (id >= ODP_CONFIG_MAX_THREADS) {
>               ODP_ERR("Too many threads\n");
> diff --git a/test/api_test/odp_atomic_test.c
> b/test/api_test/odp_atomic_test.c
> index d92a8c1..3ca7674 100644
> --- a/test/api_test/odp_atomic_test.c
> +++ b/test/api_test/odp_atomic_test.c
> @@ -10,17 +10,14 @@
>  #include <odp_common.h>
>  #include <odp_atomic_test.h>
> 
> -static odp_atomic_int_t a32;
>  static odp_atomic_u32_t a32u;
>  static odp_atomic_u64_t a64u;
> 
> -static odp_atomic_int_t numthrds;
> +static odp_atomic_u32_t numthrds;
> 
>  static const char * const test_name[] = {
>       "dummy",
>       "test atomic basic ops add/sub/inc/dec",
> -     "test atomic inc/dec of signed word",
> -     "test atomic add/sub of signed word",
>       "test atomic inc/dec of unsigned word",
>       "test atomic add/sub of unsigned word",
>       "test atomic inc/dec of unsigned double word",
> @@ -34,12 +31,10 @@ static void usage(void)
>       printf("\n./odp_atomic -t <testcase> -n <num of pthread>,\n\n"
>              "\t<testcase> is\n"
>              "\t\t1 - Test mix(does inc,dec,add,sub on 32/64 bit)\n"
> -            "\t\t2 - Test inc dec of signed word\n"
> -            "\t\t3 - Test add sub of signed word\n"
> -            "\t\t4 - Test inc dec of unsigned word\n"
> -            "\t\t5 - Test add sub of unsigned word\n"
> -            "\t\t6 - Test inc dec of double word\n"
> -            "\t\t7 - Test add sub of double word\n"
> +            "\t\t2 - Test inc dec of unsigned word\n"
> +            "\t\t3 - Test add sub of unsigned word\n"
> +            "\t\t4 - Test inc dec of double word\n"
> +            "\t\t5 - Test add sub of double word\n"
>              "\t<num of pthread> is optional\n"
>              "\t\t<1 - 31> - no of pthreads to start\n"
>              "\t\tif user doesn't specify this option, then\n"
> @@ -50,13 +45,6 @@ static void usage(void)
>              "\t\t./odp_atomic -t 3 -n 12\n");
>  }
> 
> -void test_atomic_inc_32(void)
> -{
> -     int i;
> -
> -     for (i = 0; i < CNT; i++)
> -             odp_atomic_inc_int(&a32);
> -}
> 
>  void test_atomic_inc_u32(void)
>  {
> @@ -74,14 +62,6 @@ void test_atomic_inc_64(void)
>               odp_atomic_inc_u64(&a64u);
>  }
> 
> -void test_atomic_dec_32(void)
> -{
> -     int i;
> -
> -     for (i = 0; i < CNT; i++)
> -             odp_atomic_dec_int(&a32);
> -}
> -
>  void test_atomic_dec_u32(void)
>  {
>       int i;
> @@ -98,14 +78,6 @@ void test_atomic_dec_64(void)
>               odp_atomic_dec_u64(&a64u);
>  }
> 
> -void test_atomic_add_32(void)
> -{
> -     int i;
> -
> -     for (i = 0; i < (CNT / ADD_SUB_CNT); i++)
> -             odp_atomic_fetch_add_int(&a32, ADD_SUB_CNT);
> -}
> -
>  void test_atomic_add_u32(void)
>  {
>       int i;
> @@ -122,14 +94,6 @@ void test_atomic_add_64(void)
>               odp_atomic_fetch_add_u64(&a64u, ADD_SUB_CNT);
>  }
> 
> -void test_atomic_sub_32(void)
> -{
> -     int i;
> -
> -     for (i = 0; i < (CNT / ADD_SUB_CNT); i++)
> -             odp_atomic_fetch_sub_int(&a32, ADD_SUB_CNT);
> -}
> -
>  void test_atomic_sub_u32(void)
>  {
>       int i;
> @@ -146,18 +110,6 @@ void test_atomic_sub_64(void)
>               odp_atomic_fetch_sub_u64(&a64u, ADD_SUB_CNT);
>  }
> 
> -void test_atomic_inc_dec_32(void)
> -{
> -     test_atomic_inc_32();
> -     test_atomic_dec_32();
> -}
> -
> -void test_atomic_add_sub_32(void)
> -{
> -     test_atomic_add_32();
> -     test_atomic_sub_32();
> -}
> -
>  void test_atomic_inc_dec_u32(void)
>  {
>       test_atomic_inc_u32();
> @@ -188,11 +140,6 @@ void test_atomic_add_sub_64(void)
>   */
>  void test_atomic_basic(void)
>  {
> -     test_atomic_inc_32();
> -     test_atomic_dec_32();
> -     test_atomic_add_32();
> -     test_atomic_sub_32();
> -
>       test_atomic_inc_u32();
>       test_atomic_dec_u32();
>       test_atomic_add_u32();
> @@ -206,25 +153,18 @@ void test_atomic_basic(void)
> 
>  void test_atomic_init(void)
>  {
> -     odp_atomic_init_int(&a32);
>       odp_atomic_init_u32(&a32u);
>       odp_atomic_init_u64(&a64u);
>  }
> 
>  void test_atomic_store(void)
>  {
> -     odp_atomic_store_int(&a32, S32_INIT_VAL);
>       odp_atomic_store_u32(&a32u, U32_INIT_VAL);
>       odp_atomic_store_u64(&a64u, U64_INIT_VAL);
>  }
> 
>  int test_atomic_validate(void)
>  {
> -     if (odp_atomic_load_int(&a32) != S32_INIT_VAL) {
> -             ODP_ERR("Atomic signed 32 usual functions failed\n");
> -             return -1;
> -     }
> -
>       if (odp_atomic_load_u32(&a32u) != U32_INIT_VAL) {
>               ODP_ERR("Atomic u32 usual functions failed\n");
>               return -1;
> @@ -247,7 +187,7 @@ static void *run_thread(void *arg)
> 
>       ODP_DBG("Thread %i starts\n", thr);
> 
> -     odp_atomic_inc_int(&numthrds);
> +     odp_atomic_inc_u32(&numthrds);
> 
>       /* Wait here until all pthreads are created */
>       while (*(volatile int *)&numthrds < parg->numthrds)
> @@ -259,12 +199,6 @@ static void *run_thread(void *arg)
>       case TEST_MIX:
>               test_atomic_basic();
>               break;
> -     case TEST_INC_DEC_S32:
> -             test_atomic_inc_dec_32();
> -             break;
> -     case TEST_ADD_SUB_S32:
> -             test_atomic_add_sub_32();
> -             break;
>       case TEST_INC_DEC_U32:
>               test_atomic_inc_dec_u32();
>               break;
> @@ -328,7 +262,7 @@ int main(int argc, char *argv[])
>       if (pthrdnum == 0)
>               pthrdnum = odp_sys_core_count();
> 
> -     odp_atomic_init_int(&numthrds);
> +     odp_atomic_init_u32(&numthrds);
>       test_atomic_init();
>       test_atomic_store();
> 
> diff --git a/test/api_test/odp_atomic_test.h
> b/test/api_test/odp_atomic_test.h
> index 7814da5..aaa9d34 100644
> --- a/test/api_test/odp_atomic_test.h
> +++ b/test/api_test/odp_atomic_test.h
> @@ -18,14 +18,11 @@
>  #define ADD_SUB_CNT  5
> 
>  #define      CNT 500000
> -#define      S32_INIT_VAL    (1UL << 10)
>  #define      U32_INIT_VAL    (1UL << 10)
>  #define      U64_INIT_VAL    (1ULL << 33)
> 
>  typedef enum {
>       TEST_MIX = 1, /* Must be first test case num */
> -     TEST_INC_DEC_S32,
> -     TEST_ADD_SUB_S32,
>       TEST_INC_DEC_U32,
>       TEST_ADD_SUB_U32,
>       TEST_INC_DEC_64,
> @@ -34,16 +31,10 @@ typedef enum {
>  } odp_test_atomic_t;
> 
> 
> -void test_atomic_inc_dec_32(void);
> -void test_atomic_add_sub_32(void);
>  void test_atomic_inc_dec_u32(void);
>  void test_atomic_add_sub_u32(void);
>  void test_atomic_inc_dec_64(void);
>  void test_atomic_add_sub_64(void);
> -void test_atomic_inc_32(void);
> -void test_atomic_dec_32(void);
> -void test_atomic_add_32(void);
> -void test_atomic_sub_32(void);
>  void test_atomic_inc_u32(void);
>  void test_atomic_dec_u32(void);
>  void test_atomic_add_u32(void);
> --
> 2.1.1


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to