| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * Authors: Waiman Long <longman@redhat.com>
- */
- #ifndef __LOCKING_LOCK_EVENTS_H
- #define __LOCKING_LOCK_EVENTS_H
- enum lock_events {
- #include "lock_events_list.h"
- lockevent_num, /* Total number of lock event counts */
- LOCKEVENT_reset_cnts = lockevent_num,
- };
- #ifdef CONFIG_LOCK_EVENT_COUNTS
- /*
- * Per-cpu counters
- */
- DECLARE_PER_CPU(unsigned long, lockevents[lockevent_num]);
- /*
- * Increment the statistical counters. use raw_cpu_inc() because of lower
- * overhead and we don't care if we loose the occasional update.
- */
- static inline void __lockevent_inc(enum lock_events event, bool cond)
- {
- if (cond)
- raw_cpu_inc(lockevents[event]);
- }
- #define lockevent_inc(ev) __lockevent_inc(LOCKEVENT_ ##ev, true)
- #define lockevent_cond_inc(ev, c) __lockevent_inc(LOCKEVENT_ ##ev, c)
- static inline void __lockevent_add(enum lock_events event, int inc)
- {
- raw_cpu_add(lockevents[event], inc);
- }
- #define lockevent_add(ev, c) __lockevent_add(LOCKEVENT_ ##ev, c)
- #else /* CONFIG_LOCK_EVENT_COUNTS */
- #define lockevent_inc(ev)
- #define lockevent_add(ev, c) do { (void)(c); } while (0)
- #define lockevent_cond_inc(ev, c) do { (void)(c); } while (0)
- #endif /* CONFIG_LOCK_EVENT_COUNTS */
- ssize_t lockevent_read(struct file *file, char __user *user_buf,
- size_t count, loff_t *ppos);
- #endif /* __LOCKING_LOCK_EVENTS_H */
|