Lines Matching refs:ctx
47 struct ww_acquire_ctx *ctx; member
89 lock->ctx = NULL; in ww_mutex_init()
119 static inline void ww_acquire_init(struct ww_acquire_ctx *ctx, in ww_acquire_init() argument
122 ctx->task = current; in ww_acquire_init()
123 ctx->stamp = atomic_long_inc_return(&ww_class->stamp); in ww_acquire_init()
124 ctx->acquired = 0; in ww_acquire_init()
126 ctx->ww_class = ww_class; in ww_acquire_init()
127 ctx->done_acquire = 0; in ww_acquire_init()
128 ctx->contending_lock = NULL; in ww_acquire_init()
131 debug_check_no_locks_freed((void *)ctx, sizeof(*ctx)); in ww_acquire_init()
132 lockdep_init_map(&ctx->dep_map, ww_class->acquire_name, in ww_acquire_init()
134 mutex_acquire(&ctx->dep_map, 0, 0, _RET_IP_); in ww_acquire_init()
137 ctx->deadlock_inject_interval = 1; in ww_acquire_init()
138 ctx->deadlock_inject_countdown = ctx->stamp & 0xf; in ww_acquire_init()
153 static inline void ww_acquire_done(struct ww_acquire_ctx *ctx) in ww_acquire_done() argument
156 lockdep_assert_held(ctx); in ww_acquire_done()
158 DEBUG_LOCKS_WARN_ON(ctx->done_acquire); in ww_acquire_done()
159 ctx->done_acquire = 1; in ww_acquire_done()
170 static inline void ww_acquire_fini(struct ww_acquire_ctx *ctx) in ww_acquire_fini() argument
173 mutex_release(&ctx->dep_map, 0, _THIS_IP_); in ww_acquire_fini()
175 DEBUG_LOCKS_WARN_ON(ctx->acquired); in ww_acquire_fini()
181 ctx->done_acquire = 1; in ww_acquire_fini()
185 ctx->acquired = ~0U; in ww_acquire_fini()
190 struct ww_acquire_ctx *ctx);
192 struct ww_acquire_ctx *ctx);
223 static inline int ww_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in ww_mutex_lock() argument
225 if (ctx) in ww_mutex_lock()
226 return __ww_mutex_lock(lock, ctx); in ww_mutex_lock()
263 struct ww_acquire_ctx *ctx) in ww_mutex_lock_interruptible() argument
265 if (ctx) in ww_mutex_lock_interruptible()
266 return __ww_mutex_lock_interruptible(lock, ctx); in ww_mutex_lock_interruptible()
295 ww_mutex_lock_slow(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in ww_mutex_lock_slow() argument
299 DEBUG_LOCKS_WARN_ON(!ctx->contending_lock); in ww_mutex_lock_slow()
301 ret = ww_mutex_lock(lock, ctx); in ww_mutex_lock_slow()
332 struct ww_acquire_ctx *ctx) in ww_mutex_lock_slow_interruptible() argument
335 DEBUG_LOCKS_WARN_ON(!ctx->contending_lock); in ww_mutex_lock_slow_interruptible()
337 return ww_mutex_lock_interruptible(lock, ctx); in ww_mutex_lock_slow_interruptible()