123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /* 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 <[email protected]>
- */
- #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)
- #define lockevent_cond_inc(ev, c)
- #endif /* CONFIG_LOCK_EVENT_COUNTS */
- #endif /* __LOCKING_LOCK_EVENTS_H */
|