mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-21 04:53:46 -04:00
liblockdep: Add pthread_mutex_t test suite
This is a rather simple and basic test suite to test common locking issues. Beyond tests, it also shows how to use the library. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: torvalds@linux-foundation.org Link: http://lkml.kernel.org/r/1371163284-6346-5-git-send-email-sasha.levin@oracle.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
13
tools/lib/lockdep/tests/AA.c
Normal file
13
tools/lib/lockdep/tests/AA.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
|
||||
pthread_mutex_lock(&a);
|
||||
pthread_mutex_lock(&b);
|
||||
pthread_mutex_lock(&a);
|
||||
}
|
||||
13
tools/lib/lockdep/tests/ABBA.c
Normal file
13
tools/lib/lockdep/tests/ABBA.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(b, a);
|
||||
}
|
||||
15
tools/lib/lockdep/tests/ABBCCA.c
Normal file
15
tools/lib/lockdep/tests/ABBCCA.c
Normal file
@@ -0,0 +1,15 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b, c;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
pthread_mutex_init(&c, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(b, c);
|
||||
LOCK_UNLOCK_2(c, a);
|
||||
}
|
||||
17
tools/lib/lockdep/tests/ABBCCDDA.c
Normal file
17
tools/lib/lockdep/tests/ABBCCDDA.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b, c, d;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
pthread_mutex_init(&c, NULL);
|
||||
pthread_mutex_init(&d, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(b, c);
|
||||
LOCK_UNLOCK_2(c, d);
|
||||
LOCK_UNLOCK_2(d, a);
|
||||
}
|
||||
15
tools/lib/lockdep/tests/ABCABC.c
Normal file
15
tools/lib/lockdep/tests/ABCABC.c
Normal file
@@ -0,0 +1,15 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b, c;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
pthread_mutex_init(&c, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(c, a);
|
||||
LOCK_UNLOCK_2(b, c);
|
||||
}
|
||||
17
tools/lib/lockdep/tests/ABCDBCDA.c
Normal file
17
tools/lib/lockdep/tests/ABCDBCDA.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b, c, d;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
pthread_mutex_init(&c, NULL);
|
||||
pthread_mutex_init(&d, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(c, d);
|
||||
LOCK_UNLOCK_2(b, c);
|
||||
LOCK_UNLOCK_2(d, a);
|
||||
}
|
||||
17
tools/lib/lockdep/tests/ABCDBDDA.c
Normal file
17
tools/lib/lockdep/tests/ABCDBDDA.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
#include "common.h"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a, b, c, d;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
pthread_mutex_init(&b, NULL);
|
||||
pthread_mutex_init(&c, NULL);
|
||||
pthread_mutex_init(&d, NULL);
|
||||
|
||||
LOCK_UNLOCK_2(a, b);
|
||||
LOCK_UNLOCK_2(c, d);
|
||||
LOCK_UNLOCK_2(b, d);
|
||||
LOCK_UNLOCK_2(d, a);
|
||||
}
|
||||
12
tools/lib/lockdep/tests/common.h
Normal file
12
tools/lib/lockdep/tests/common.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef _LIBLOCKDEP_TEST_COMMON_H
|
||||
#define _LIBLOCKDEP_TEST_COMMON_H
|
||||
|
||||
#define LOCK_UNLOCK_2(a, b) \
|
||||
do { \
|
||||
pthread_mutex_lock(&(a)); \
|
||||
pthread_mutex_lock(&(b)); \
|
||||
pthread_mutex_unlock(&(b)); \
|
||||
pthread_mutex_unlock(&(a)); \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
12
tools/lib/lockdep/tests/unlock_balance.c
Normal file
12
tools/lib/lockdep/tests/unlock_balance.c
Normal file
@@ -0,0 +1,12 @@
|
||||
#include <liblockdep/mutex.h>
|
||||
|
||||
void main(void)
|
||||
{
|
||||
pthread_mutex_t a;
|
||||
|
||||
pthread_mutex_init(&a, NULL);
|
||||
|
||||
pthread_mutex_lock(&a);
|
||||
pthread_mutex_unlock(&a);
|
||||
pthread_mutex_unlock(&a);
|
||||
}
|
||||
Reference in New Issue
Block a user