Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 878f968e authored by Sasha Levin's avatar Sasha Levin Committed by Ingo Molnar
Browse files

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: default avatarSasha Levin <sasha.levin@oracle.com>
Signed-off-by: default avatarPeter 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: default avatarIngo Molnar <mingo@kernel.org>
parent 45e62074
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
#! /bin/bash

make &> /dev/null

for i in `ls tests/*.c`; do
	testname=$(basename -s .c "$i")
	gcc -o tests/$testname -pthread -lpthread $i liblockdep.a -Iinclude -D__USE_LIBLOCKDEP &> /dev/null
	echo -ne "$testname... "
	if [ $(timeout 1 ./tests/$testname | wc -l) -gt 0 ]; then
		echo "PASSED!"
	else
		echo "FAILED!"
	fi
	rm tests/$testname
done

for i in `ls tests/*.c`; do
	testname=$(basename -s .c "$i")
	gcc -o tests/$testname -pthread -lpthread -Iinclude $i &> /dev/null
	echo -ne "(PRELOAD) $testname... "
	if [ $(timeout 1 ./lockdep ./tests/$testname | wc -l) -gt 0 ]; then
		echo "PASSED!"
	else
		echo "FAILED!"
	fi
	rm tests/$testname
done
+13 −0
Original line number Diff line number Diff line
#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 −0
Original line number Diff line number Diff line
#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 −0
Original line number Diff line number Diff line
#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 −0
Original line number Diff line number Diff line
#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);
}
Loading