OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [kernel/] [mutex-debug.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Mutexes: blocking mutual exclusion locks
3
 *
4
 * started by Ingo Molnar:
5
 *
6
 *  Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
7
 *
8
 * This file contains mutex debugging related internal declarations,
9
 * prototypes and inline functions, for the CONFIG_DEBUG_MUTEXES case.
10
 * More details are in kernel/mutex-debug.c.
11
 */
12
 
13
/*
14
 * This must be called with lock->wait_lock held.
15
 */
16
extern void
17
debug_mutex_set_owner(struct mutex *lock, struct thread_info *new_owner);
18
 
19
static inline void debug_mutex_clear_owner(struct mutex *lock)
20
{
21
        lock->owner = NULL;
22
}
23
 
24
extern void debug_mutex_lock_common(struct mutex *lock,
25
                                    struct mutex_waiter *waiter);
26
extern void debug_mutex_wake_waiter(struct mutex *lock,
27
                                    struct mutex_waiter *waiter);
28
extern void debug_mutex_free_waiter(struct mutex_waiter *waiter);
29
extern void debug_mutex_add_waiter(struct mutex *lock,
30
                                   struct mutex_waiter *waiter,
31
                                   struct thread_info *ti);
32
extern void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
33
                                struct thread_info *ti);
34
extern void debug_mutex_unlock(struct mutex *lock);
35
extern void debug_mutex_init(struct mutex *lock, const char *name,
36
                             struct lock_class_key *key);
37
 
38
#define spin_lock_mutex(lock, flags)                    \
39
        do {                                            \
40
                struct mutex *l = container_of(lock, struct mutex, wait_lock); \
41
                                                        \
42
                DEBUG_LOCKS_WARN_ON(in_interrupt());    \
43
                local_irq_save(flags);                  \
44
                __raw_spin_lock(&(lock)->raw_lock);     \
45
                DEBUG_LOCKS_WARN_ON(l->magic != l);     \
46
        } while (0)
47
 
48
#define spin_unlock_mutex(lock, flags)                  \
49
        do {                                            \
50
                __raw_spin_unlock(&(lock)->raw_lock);   \
51
                local_irq_restore(flags);               \
52
                preempt_check_resched();                \
53
        } while (0)

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.