diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2020-01-05 12:48:19 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2020-01-05 12:48:19 +0000 |
commit | 2e77cad11dc5ec9c14c074dfc127f8420075aa7c (patch) | |
tree | c160653223c1bbca4cc10daa6ff08b908f8a3f5f /sys/kern/subr_lock.c | |
parent | 6b8dd26e7c5f2caf9e5094d6fa15d8edcace65a0 (diff) |
locks: add default delay struct
Use it for all primitives. This makes everything fit in 8 bytes.
Notes
Notes:
svn path=/head/; revision=356375
Diffstat (limited to 'sys/kern/subr_lock.c')
-rw-r--r-- | sys/kern/subr_lock.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/kern/subr_lock.c b/sys/kern/subr_lock.c index 669b89d9c165..3d6e86419867 100644 --- a/sys/kern/subr_lock.c +++ b/sys/kern/subr_lock.c @@ -161,6 +161,29 @@ lock_delay_default_init(struct lock_delay_config *lc) lc->max = 32678; } +struct lock_delay_config __read_frequently locks_delay; +u_short __read_frequently locks_delay_retries; +u_short __read_frequently locks_delay_loops; + +SYSCTL_U16(_debug_lock, OID_AUTO, delay_base, CTLFLAG_RW, &locks_delay.base, + 0, ""); +SYSCTL_U16(_debug_lock, OID_AUTO, delay_max, CTLFLAG_RW, &locks_delay.max, + 0, ""); +SYSCTL_U16(_debug_lock, OID_AUTO, delay_retries, CTLFLAG_RW, &locks_delay_retries, + 0, ""); +SYSCTL_U16(_debug_lock, OID_AUTO, delay_loops, CTLFLAG_RW, &locks_delay_loops, + 0, ""); + +static void +locks_delay_init(void *arg __unused) +{ + + lock_delay_default_init(&locks_delay); + locks_delay_retries = 10; + locks_delay_loops = max(10000, locks_delay.max); +} +LOCK_DELAY_SYSINIT(locks_delay_init); + #ifdef DDB DB_SHOW_COMMAND(lock, db_show_lock) { |