Subversion Repositories HelenOS

Rev

Rev 2131 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2131 Rev 2307
Line 99... Line 99...
99
   
99
   
100
    atomic_set(&sl->val, 0);
100
    atomic_set(&sl->val, 0);
101
    preemption_enable();
101
    preemption_enable();
102
}
102
}
103
 
103
 
-
 
104
#ifdef CONFIG_DEBUG_SPINLOCK
-
 
105
 
-
 
106
extern int printf(const char *, ...);
-
 
107
 
-
 
108
#define DEADLOCK_THRESHOLD      100000000
-
 
109
#define DEADLOCK_PROBE_INIT(pname)  count_t pname = 0
-
 
110
#define DEADLOCK_PROBE(pname, value)                    \
-
 
111
    if ((pname)++ > (value)) {                  \
-
 
112
        (pname) = 0;                        \
-
 
113
        printf("Deadlock probe %s: exceeded threshold %d\n",    \
-
 
114
            "cpu%d: function=%s, line=%d\n",            \
-
 
115
            #pname, (value), CPU->id, __FUNCTION__, __LINE__);  \
-
 
116
    }
-
 
117
#else
-
 
118
#define DEADLOCK_PROBE_INIT(pname)
-
 
119
#define DEADLOCK_PROBE(pname, value)
-
 
120
#endif
-
 
121
 
104
#else
122
#else
105
 
123
 
106
/* On UP systems, spinlocks are effectively left out. */
124
/* On UP systems, spinlocks are effectively left out. */
107
#define SPINLOCK_DECLARE(name)
125
#define SPINLOCK_DECLARE(name)
108
#define SPINLOCK_EXTERN(name)
126
#define SPINLOCK_EXTERN(name)
Line 111... Line 129...
111
#define spinlock_initialize(x, name)
129
#define spinlock_initialize(x, name)
112
#define spinlock_lock(x)        preemption_disable()
130
#define spinlock_lock(x)        preemption_disable()
113
#define spinlock_trylock(x)         (preemption_disable(), 1)
131
#define spinlock_trylock(x)         (preemption_disable(), 1)
114
#define spinlock_unlock(x)      preemption_enable()
132
#define spinlock_unlock(x)      preemption_enable()
115
 
133
 
-
 
134
#define DEADLOCK_PROBE_INIT(pname)
-
 
135
#define DEADLOCK_PROBE(pname, value)
-
 
136
 
116
#endif
137
#endif
117
 
138
 
118
#endif
139
#endif
119
 
140
 
120
/** @}
141
/** @}