[v2,2/3] Mutex: add unit tests for new type

Message ID 1545286557-20901-2-git-send-email-kemi.wang@intel.com
State New
Headers show
Series
  • [v2,1/3] Mutex: Accelerate lock acquisition by queuing spinner
Related show

Commit Message

kemi Dec. 20, 2018, 6:15 a.m.
Signed-off-by: Kemi Wang <kemi.wang@intel.com>

---
 nptl/Makefile            |  8 ++++----
 nptl/tst-initializers1.c | 11 +++++++----
 nptl/tst-mutex5b.c       |  2 ++
 nptl/tst-mutex7b.c       |  2 ++
 4 files changed, 15 insertions(+), 8 deletions(-)
 create mode 100644 nptl/tst-mutex5b.c
 create mode 100644 nptl/tst-mutex7b.c

-- 
2.7.4

Comments

Siddhesh Poyarekar Dec. 31, 2018, 5:42 p.m. | #1
On 20/12/18 11:45 AM, Kemi Wang wrote:
> Signed-off-by: Kemi Wang <kemi.wang@intel.com>


Please add a ChangeLog entry and a more detailed description of this change.

> ---

>   nptl/Makefile            |  8 ++++----

>   nptl/tst-initializers1.c | 11 +++++++----

>   nptl/tst-mutex5b.c       |  2 ++

>   nptl/tst-mutex7b.c       |  2 ++

>   4 files changed, 15 insertions(+), 8 deletions(-)

>   create mode 100644 nptl/tst-mutex5b.c

>   create mode 100644 nptl/tst-mutex7b.c

> 

> diff --git a/nptl/Makefile b/nptl/Makefile

> index 997da5e..1f6ecd4 100644

> --- a/nptl/Makefile

> +++ b/nptl/Makefile

> @@ -242,10 +242,10 @@ LDLIBS-tst-minstack-throw = -lstdc++

>   

>   tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \

>   	tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \

> -	tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex7a \

> -	tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 \

> -	tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 tst-mutexpi7a \

> -	tst-mutexpi9 \

> +	tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex5b tst-mutex7a \

> +	tst-mutex7b tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 \

> +	tst-mutexpi4 tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 \

> +	tst-mutexpi7a tst-mutexpi9 \

>   	tst-spin1 tst-spin2 tst-spin3 tst-spin4 \

>   	tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \

>   	tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \

> diff --git a/nptl/tst-initializers1.c b/nptl/tst-initializers1.c

> index a8fdac1..3677cc0 100644

> --- a/nptl/tst-initializers1.c

> +++ b/nptl/tst-initializers1.c

> @@ -24,6 +24,7 @@

>   pthread_mutex_t mtx_normal = PTHREAD_MUTEX_INITIALIZER;

>   pthread_mutex_t mtx_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;

>   pthread_mutex_t mtx_errorchk = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;

> +pthread_mutex_t mtx_queuespinner = PTHREAD_QUEUESPINNER_MUTEX_INITIALIZER_NP;

>   pthread_mutex_t mtx_adaptive = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;

>   pthread_rwlock_t rwl_normal = PTHREAD_RWLOCK_INITIALIZER;

>   pthread_rwlock_t rwl_writer

> @@ -39,20 +40,22 @@ do_test (void)

>       return 2;

>     if (mtx_errorchk.__data.__kind != PTHREAD_MUTEX_ERRORCHECK_NP)

>       return 3;

> -  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)

> +  if (mtx_queuespinner.__data.__kind != PTHREAD_MUTEX_QUEUESPINNER_NP)

>       return 4;

> -  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)

> +  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)

>       return 5;

> +  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)

> +    return 6;

>     if (rwl_writer.__data.__flags

>         != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)

> -    return 6;

> +    return 7;

>     /* <libc-lock.h> __libc_rwlock_init definition for libc.so

>        relies on PTHREAD_RWLOCK_INITIALIZER being all zeros.  If

>        that ever changes, <libc-lock.h> needs updating.  */

>     size_t i;

>     for (i = 0; i < sizeof (rwl_normal); i++)

>       if (((char *) &rwl_normal)[i] != '\0')

> -      return 7;

> +      return 8;

>     return 0;

>   }

>   

> diff --git a/nptl/tst-mutex5b.c b/nptl/tst-mutex5b.c

> new file mode 100644

> index 0000000..9da54ea

> --- /dev/null

> +++ b/nptl/tst-mutex5b.c

> @@ -0,0 +1,2 @@

> +#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP

> +#include "tst-mutex5.c"

> diff --git a/nptl/tst-mutex7b.c b/nptl/tst-mutex7b.c

> new file mode 100644

> index 0000000..c2c1410

> --- /dev/null

> +++ b/nptl/tst-mutex7b.c

> @@ -0,0 +1,2 @@

> +#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP

> +#include "tst-mutex7.c"

>
kemi Jan. 2, 2019, 1:43 a.m. | #2
On 2019/1/1 上午1:42, Siddhesh Poyarekar wrote:
> On 20/12/18 11:45 AM, Kemi Wang wrote:

>> Signed-off-by: Kemi Wang <kemi.wang@intel.com>

> 

> Please add a ChangeLog entry and a more detailed description of this change.

> 


sure.

>> ---

>>   nptl/Makefile            |  8 ++++----

>>   nptl/tst-initializers1.c | 11 +++++++----

>>   nptl/tst-mutex5b.c       |  2 ++

>>   nptl/tst-mutex7b.c       |  2 ++

>>   4 files changed, 15 insertions(+), 8 deletions(-)

>>   create mode 100644 nptl/tst-mutex5b.c

>>   create mode 100644 nptl/tst-mutex7b.c

>>

>> diff --git a/nptl/Makefile b/nptl/Makefile

>> index 997da5e..1f6ecd4 100644

>> --- a/nptl/Makefile

>> +++ b/nptl/Makefile

>> @@ -242,10 +242,10 @@ LDLIBS-tst-minstack-throw = -lstdc++

>>     tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \

>>       tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \

>> -    tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex7a \

>> -    tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 \

>> -    tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 tst-mutexpi7a \

>> -    tst-mutexpi9 \

>> +    tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex5b tst-mutex7a \

>> +    tst-mutex7b tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 \

>> +    tst-mutexpi4 tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 \

>> +    tst-mutexpi7a tst-mutexpi9 \

>>       tst-spin1 tst-spin2 tst-spin3 tst-spin4 \

>>       tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \

>>       tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \

>> diff --git a/nptl/tst-initializers1.c b/nptl/tst-initializers1.c

>> index a8fdac1..3677cc0 100644

>> --- a/nptl/tst-initializers1.c

>> +++ b/nptl/tst-initializers1.c

>> @@ -24,6 +24,7 @@

>>   pthread_mutex_t mtx_normal = PTHREAD_MUTEX_INITIALIZER;

>>   pthread_mutex_t mtx_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;

>>   pthread_mutex_t mtx_errorchk = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;

>> +pthread_mutex_t mtx_queuespinner = PTHREAD_QUEUESPINNER_MUTEX_INITIALIZER_NP;

>>   pthread_mutex_t mtx_adaptive = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;

>>   pthread_rwlock_t rwl_normal = PTHREAD_RWLOCK_INITIALIZER;

>>   pthread_rwlock_t rwl_writer

>> @@ -39,20 +40,22 @@ do_test (void)

>>       return 2;

>>     if (mtx_errorchk.__data.__kind != PTHREAD_MUTEX_ERRORCHECK_NP)

>>       return 3;

>> -  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)

>> +  if (mtx_queuespinner.__data.__kind != PTHREAD_MUTEX_QUEUESPINNER_NP)

>>       return 4;

>> -  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)

>> +  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)

>>       return 5;

>> +  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)

>> +    return 6;

>>     if (rwl_writer.__data.__flags

>>         != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)

>> -    return 6;

>> +    return 7;

>>     /* <libc-lock.h> __libc_rwlock_init definition for libc.so

>>        relies on PTHREAD_RWLOCK_INITIALIZER being all zeros.  If

>>        that ever changes, <libc-lock.h> needs updating.  */

>>     size_t i;

>>     for (i = 0; i < sizeof (rwl_normal); i++)

>>       if (((char *) &rwl_normal)[i] != '\0')

>> -      return 7;

>> +      return 8;

>>     return 0;

>>   }

>>   diff --git a/nptl/tst-mutex5b.c b/nptl/tst-mutex5b.c

>> new file mode 100644

>> index 0000000..9da54ea

>> --- /dev/null

>> +++ b/nptl/tst-mutex5b.c

>> @@ -0,0 +1,2 @@

>> +#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP

>> +#include "tst-mutex5.c"

>> diff --git a/nptl/tst-mutex7b.c b/nptl/tst-mutex7b.c

>> new file mode 100644

>> index 0000000..c2c1410

>> --- /dev/null

>> +++ b/nptl/tst-mutex7b.c

>> @@ -0,0 +1,2 @@

>> +#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP

>> +#include "tst-mutex7.c"

>>

>

Patch

diff --git a/nptl/Makefile b/nptl/Makefile
index 997da5e..1f6ecd4 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -242,10 +242,10 @@  LDLIBS-tst-minstack-throw = -lstdc++
 
 tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
 	tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \
-	tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex7a \
-	tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 \
-	tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 tst-mutexpi7a \
-	tst-mutexpi9 \
+	tst-mutex7 tst-mutex9 tst-mutex10 tst-mutex5a tst-mutex5b tst-mutex7a \
+	tst-mutex7b tst-mutex7robust tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 \
+	tst-mutexpi4 tst-mutexpi5 tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 \
+	tst-mutexpi7a tst-mutexpi9 \
 	tst-spin1 tst-spin2 tst-spin3 tst-spin4 \
 	tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \
 	tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \
diff --git a/nptl/tst-initializers1.c b/nptl/tst-initializers1.c
index a8fdac1..3677cc0 100644
--- a/nptl/tst-initializers1.c
+++ b/nptl/tst-initializers1.c
@@ -24,6 +24,7 @@ 
 pthread_mutex_t mtx_normal = PTHREAD_MUTEX_INITIALIZER;
 pthread_mutex_t mtx_recursive = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 pthread_mutex_t mtx_errorchk = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+pthread_mutex_t mtx_queuespinner = PTHREAD_QUEUESPINNER_MUTEX_INITIALIZER_NP;
 pthread_mutex_t mtx_adaptive = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
 pthread_rwlock_t rwl_normal = PTHREAD_RWLOCK_INITIALIZER;
 pthread_rwlock_t rwl_writer
@@ -39,20 +40,22 @@  do_test (void)
     return 2;
   if (mtx_errorchk.__data.__kind != PTHREAD_MUTEX_ERRORCHECK_NP)
     return 3;
-  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)
+  if (mtx_queuespinner.__data.__kind != PTHREAD_MUTEX_QUEUESPINNER_NP)
     return 4;
-  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)
+  if (mtx_adaptive.__data.__kind != PTHREAD_MUTEX_ADAPTIVE_NP)
     return 5;
+  if (rwl_normal.__data.__flags != PTHREAD_RWLOCK_PREFER_READER_NP)
+    return 6;
   if (rwl_writer.__data.__flags
       != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
-    return 6;
+    return 7;
   /* <libc-lock.h> __libc_rwlock_init definition for libc.so
      relies on PTHREAD_RWLOCK_INITIALIZER being all zeros.  If
      that ever changes, <libc-lock.h> needs updating.  */
   size_t i;
   for (i = 0; i < sizeof (rwl_normal); i++)
     if (((char *) &rwl_normal)[i] != '\0')
-      return 7;
+      return 8;
   return 0;
 }
 
diff --git a/nptl/tst-mutex5b.c b/nptl/tst-mutex5b.c
new file mode 100644
index 0000000..9da54ea
--- /dev/null
+++ b/nptl/tst-mutex5b.c
@@ -0,0 +1,2 @@ 
+#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP
+#include "tst-mutex5.c"
diff --git a/nptl/tst-mutex7b.c b/nptl/tst-mutex7b.c
new file mode 100644
index 0000000..c2c1410
--- /dev/null
+++ b/nptl/tst-mutex7b.c
@@ -0,0 +1,2 @@ 
+#define TYPE PTHREAD_MUTEX_QUEUESPINNER_NP
+#include "tst-mutex7.c"