From cf2c0856ec3d93ba46846aa71ca163a16b150a47 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 29 Mar 2010 09:13:02 +0300 Subject: [PATCH] locking: add more standard locks For some kernel releases spin_lock() was always a macro. Now it's a function. I decided that all of the functions that start with a single underscore probably have a no underscore version as well. They could be macros now but they may become real functions later on. So I added them all. Signed-off-by: Dan Carpenter --- check_locking.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/check_locking.c b/check_locking.c index 42aa5141..3b73891a 100644 --- a/check_locking.c +++ b/check_locking.c @@ -90,80 +90,115 @@ static struct lock_info kernel_lock_table[] = { {"lock_kernel", LOCK, "BKL", NO_ARG, ret_any}, {"unlock_kernel", UNLOCK, "BKL", NO_ARG, ret_any}, + {"spin_lock", LOCK, "spin_lock", 0, ret_any}, + {"spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, + {"spin_lock_nested", LOCK, "spin_lock", 0, ret_any}, {"_spin_lock", LOCK, "spin_lock", 0, ret_any}, {"_spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, {"_spin_lock_nested", LOCK, "spin_lock", 0, ret_any}, {"__spin_lock", LOCK, "spin_lock", 0, ret_any}, {"__spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, {"__spin_lock_nested", LOCK, "spin_lock", 0, ret_any}, + {"raw_spin_lock", LOCK, "spin_lock", 0, ret_any}, + {"raw_spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, {"_raw_spin_lock", LOCK, "spin_lock", 0, ret_any}, {"_raw_spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, {"__raw_spin_lock", LOCK, "spin_lock", 0, ret_any}, {"__raw_spin_unlock", UNLOCK, "spin_lock", 0, ret_any}, + {"spin_lock_irq", LOCK, "spin_lock", 0, ret_any}, + {"spin_unlock_irq", UNLOCK, "spin_lock", 0, ret_any}, {"_spin_lock_irq", LOCK, "spin_lock", 0, ret_any}, {"_spin_unlock_irq", UNLOCK, "spin_lock", 0, ret_any}, {"__spin_lock_irq", LOCK, "spin_lock", 0, ret_any}, {"__spin_unlock_irq", UNLOCK, "spin_lock", 0, ret_any}, + {"spin_lock_irqsave", LOCK, "spin_lock", 0, ret_any}, + {"spin_unlock_irqrestore", UNLOCK, "spin_lock", 0, ret_any}, {"_spin_lock_irqsave", LOCK, "spin_lock", 0, ret_any}, {"_spin_unlock_irqrestore", UNLOCK, "spin_lock", 0, ret_any}, {"__spin_lock_irqsave", LOCK, "spin_lock", 0, ret_any}, {"__spin_unlock_irqrestore", UNLOCK, "spin_lock", 0, ret_any}, + {"spin_lock_irqsave_nested", LOCK, "spin_lock", 0, ret_any}, {"_spin_lock_irqsave_nested", LOCK, "spin_lock", 0, ret_any}, {"__spin_lock_irqsave_nested", LOCK, "spin_lock", 0, ret_any}, + {"spin_lock_bh", LOCK, "spin_lock", 0, ret_any}, + {"spin_unlock_bh", UNLOCK, "spin_lock", 0, ret_any}, {"_spin_lock_bh", LOCK, "spin_lock", 0, ret_any}, {"_spin_unlock_bh", UNLOCK, "spin_lock", 0, ret_any}, {"__spin_lock_bh", LOCK, "spin_lock", 0, ret_any}, {"__spin_unlock_bh", UNLOCK, "spin_lock", 0, ret_any}, + {"spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, {"_spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, {"__spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, + {"raw_spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, {"_raw_spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, + {"spin_trylock_bh", LOCK, "spin_lock", 0, ret_non_zero}, {"_spin_trylock_bh", LOCK, "spin_lock", 0, ret_non_zero}, {"__spin_trylock_bh", LOCK, "spin_lock", 0, ret_non_zero}, {"__raw_spin_trylock", LOCK, "spin_lock", 0, ret_non_zero}, + {"read_lock", LOCK, "read_lock", 0, ret_any}, + {"read_unlock", UNLOCK, "read_lock", 0, ret_any}, {"_read_lock", LOCK, "read_lock", 0, ret_any}, {"_read_unlock", UNLOCK, "read_lock", 0, ret_any}, {"__read_lock", LOCK, "read_lock", 0, ret_any}, {"__read_unlock", UNLOCK, "read_lock", 0, ret_any}, + {"read_lock_irq", LOCK, "read_lock", 0, ret_any}, + {"read_unlock_irq" , UNLOCK, "read_lock", 0, ret_any}, {"_read_lock_irq", LOCK, "read_lock", 0, ret_any}, {"_read_unlock_irq", UNLOCK, "read_lock", 0, ret_any}, {"__read_lock_irq", LOCK, "read_lock", 0, ret_any}, {"__read_unlock_irq", UNLOCK, "read_lock", 0, ret_any}, + {"read_lock_irqsave", LOCK, "read_lock", 0, ret_any}, + {"read_unlock_irqrestore", UNLOCK, "read_lock", 0, ret_any}, {"_read_lock_irqsave", LOCK, "read_lock", 0, ret_any}, {"_read_unlock_irqrestore", UNLOCK, "read_lock", 0, ret_any}, {"__read_lock_irqsave", LOCK, "read_lock", 0, ret_any}, {"__read_unlock_irqrestore", UNLOCK, "read_lock", 0, ret_any}, + {"read_lock_bh", LOCK, "read_lock", 0, ret_any}, + {"read_unlock_bh", UNLOCK, "read_lock", 0, ret_any}, {"_read_lock_bh", LOCK, "read_lock", 0, ret_any}, {"_read_unlock_bh", UNLOCK, "read_lock", 0, ret_any}, {"__read_lock_bh", LOCK, "read_lock", 0, ret_any}, {"__read_unlock_bh", UNLOCK, "read_lock", 0, ret_any}, {"generic__raw_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, - {"_raw_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, + {"read_trylock", LOCK, "read_lock", 0, ret_non_zero}, {"_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, + {"raw_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, + {"_raw_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, {"__raw_read_trylock", LOCK, "read_lock", 0, ret_non_zero}, {"__read_trylock", LOCK, "read_lock", 0, ret_non_zero}, + {"write_lock", LOCK, "write_lock", 0, ret_any}, + {"write_unlock", UNLOCK, "write_lock", 0, ret_any}, {"_write_lock", LOCK, "write_lock", 0, ret_any}, - {"_write_unlock", UNLOCK, "write_lock", 0, ret_any}, - {"__write_lock", LOCK, "write_lock", 0, ret_any}, - {"__write_unlock", UNLOCK, "write_lock", 0, ret_any}, - {"_write_lock_irq", LOCK, "write_lock", 0, ret_any}, + {"_write_unlock", UNLOCK, "write_lock", 0, ret_any}, + {"__write_lock", LOCK, "write_lock", 0, ret_any}, + {"__write_unlock", UNLOCK, "write_lock", 0, ret_any}, + {"write_lock_irq", LOCK, "write_lock", 0, ret_any}, + {"write_unlock_irq", UNLOCK, "write_lock", 0, ret_any}, + {"_write_lock_irq", LOCK, "write_lock", 0, ret_any}, {"_write_unlock_irq", UNLOCK, "write_lock", 0, ret_any}, {"__write_lock_irq", LOCK, "write_lock", 0, ret_any}, {"__write_unlock_irq", UNLOCK, "write_lock", 0, ret_any}, - {"_write_lock_irqsave", LOCK, "write_lock", 0, ret_any}, - {"_write_unlock_irqrestore", UNLOCK, "write_lock", 0, ret_any}, + {"write_lock_irqsave", LOCK, "write_lock", 0, ret_any}, + {"write_unlock_irqrestore", UNLOCK, "write_lock", 0, ret_any}, + {"_write_lock_irqsave", LOCK, "write_lock", 0, ret_any}, + {"_write_unlock_irqrestore", UNLOCK, "write_lock", 0, ret_any}, {"__write_lock_irqsave", LOCK, "write_lock", 0, ret_any}, {"__write_unlock_irqrestore", UNLOCK, "write_lock", 0, ret_any}, - {"_write_lock_bh", LOCK, "write_lock", 0, ret_any}, - {"_write_unlock_bh", UNLOCK, "write_lock", 0, ret_any}, + {"write_lock_bh", LOCK, "write_lock", 0, ret_any}, + {"write_unlock_bh", UNLOCK, "write_lock", 0, ret_any}, + {"_write_lock_bh", LOCK, "write_lock", 0, ret_any}, + {"_write_unlock_bh", UNLOCK, "write_lock", 0, ret_any}, {"__write_lock_bh", LOCK, "write_lock", 0, ret_any}, {"__write_unlock_bh", UNLOCK, "write_lock", 0, ret_any}, + {"write_trylock", LOCK, "write_lock", 0, ret_non_zero}, {"_write_trylock", LOCK, "write_lock", 0, ret_non_zero}, + {"raw_write_trylock", LOCK, "write_lock", 0, ret_non_zero}, {"_raw_write_trylock", LOCK, "write_lock", 0, ret_non_zero}, {"__write_trylock", LOCK, "write_lock", 0, ret_non_zero}, {"__raw_write_trylock", LOCK, "write_lock", 0, ret_non_zero}, @@ -186,14 +221,20 @@ static struct lock_info kernel_lock_table[] = { {"raw_local_irq_disable", LOCK, "irq", NO_ARG, ret_any}, {"raw_local_irq_enable", UNLOCK, "irq", NO_ARG, ret_any}, + {"spin_lock_irq", LOCK, "irq", NO_ARG, ret_any}, + {"spin_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"_spin_lock_irq", LOCK, "irq", NO_ARG, ret_any}, {"_spin_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"__spin_lock_irq", LOCK, "irq", NO_ARG, ret_any}, {"__spin_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, + {"read_lock_irq", LOCK, "irq", NO_ARG, ret_any}, + {"read_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"_read_lock_irq", LOCK, "irq", NO_ARG, ret_any}, {"_read_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"__read_lock_irq", LOCK, "irq", NO_ARG, ret_any}, {"__read_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, + {"write_lock_irq", LOCK, "irq", NO_ARG, ret_any}, + {"write_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"_write_lock_irq", LOCK, "irq", NO_ARG, ret_any}, {"_write_unlock_irq", UNLOCK, "irq", NO_ARG, ret_any}, {"__write_lock_irq", LOCK, "irq", NO_ARG, ret_any}, @@ -201,6 +242,10 @@ static struct lock_info kernel_lock_table[] = { {"__raw_local_irq_save", LOCK, "irqsave", RETURN_VAL, ret_any}, {"raw_local_irq_restore", UNLOCK, "irqsave", 0, ret_any}, + {"spin_lock_irqsave_nested", LOCK, "irqsave", RETURN_VAL, ret_any}, + {"spin_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, + {"spin_lock_irqsave", LOCK, "irqsave", 1, ret_any}, + {"spin_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, {"_spin_lock_irqsave_nested", LOCK, "irqsave", RETURN_VAL, ret_any}, {"_spin_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, {"_spin_lock_irqsave", LOCK, "irqsave", 1, ret_any}, @@ -208,29 +253,42 @@ static struct lock_info kernel_lock_table[] = { {"__spin_lock_irqsave_nested", LOCK, "irqsave", 1, ret_any}, {"__spin_lock_irqsave", LOCK, "irqsave", 1, ret_any}, {"__spin_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, + {"read_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, + {"read_lock_irqsave", LOCK, "irqsave", 1, ret_any}, + {"read_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, {"_read_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, {"_read_lock_irqsave", LOCK, "irqsave", 1, ret_any}, {"_read_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, {"__read_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, {"__read_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, + {"write_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, + {"write_lock_irqsave", LOCK, "irqsave", 1, ret_any}, + {"write_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, {"_write_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, {"_write_lock_irqsave", LOCK, "irqsave", 1, ret_any}, {"_write_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, {"__write_lock_irqsave", LOCK, "irqsave", RETURN_VAL, ret_any}, {"__write_unlock_irqrestore", UNLOCK, "irqsave", 1, ret_any}, + {"spin_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, + {"spin_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"_spin_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"_spin_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"__spin_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"__spin_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, + {"read_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, + {"read_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"_read_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"_read_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"__read_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"__read_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, + {"write_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, + {"write_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"_write_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"_write_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, {"__write_lock_bh", LOCK, "bottom_half", NO_ARG, ret_any}, {"__write_unlock_bh", UNLOCK, "bottom_half", NO_ARG, ret_any}, + {"spin_trylock_bh", LOCK, "bottom_half", NO_ARG, ret_non_zero}, {"_spin_trylock_bh", LOCK, "bottom_half", NO_ARG, ret_non_zero}, {"__spin_trylock_bh", LOCK, "bottom_half", NO_ARG, ret_non_zero}, }; -- 2.11.4.GIT