1/*- 2 * Copyright (c) 2008 Isilon Systems, Inc. 3 * Copyright (c) 2008 Ilya Maykov <ivmaykov@gmail.com> 4 * Copyright (c) 1998 Berkeley Software Design, Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 71 unchanged lines hidden (view full) --- 80 * you have two threads T1 and T2 and a sleepable lock X. Suppose that T1 81 * acquires X and blocks on Giant. Then suppose that T2 acquires Giant and 82 * blocks on X. When T2 blocks on X, T2 will release Giant allowing T1 to 83 * execute. Thus, acquiring Giant both before and after a sleepable lock 84 * will not result in a lock order reversal. 85 */ 86 87#include <sys/cdefs.h> |
88__FBSDID("$FreeBSD: head/sys/kern/subr_witness.c 191672 2009-04-29 19:19:13Z bms $"); |
89 90#include "opt_ddb.h" 91#include "opt_hwpmc_hooks.h" 92#include "opt_stack.h" 93#include "opt_witness.h" 94 95#include <sys/param.h> 96#include <sys/bus.h> --- 410 unchanged lines hidden (view full) --- 507 * Routing 508 */ 509 { "so_rcv", &lock_class_mtx_sleep }, 510 { "radix node head", &lock_class_rw }, 511 { "rtentry", &lock_class_mtx_sleep }, 512 { "ifaddr", &lock_class_mtx_sleep }, 513 { NULL, NULL }, 514 /* |
515 * IPv4 multicast: 516 * protocol locks before interface locks, after UDP locks. |
517 */ 518 { "udpinp", &lock_class_rw }, 519 { "in_multi_mtx", &lock_class_mtx_sleep }, 520 { "igmp_mtx", &lock_class_mtx_sleep }, 521 { "if_addr_mtx", &lock_class_mtx_sleep }, 522 { NULL, NULL }, 523 /* |
524 * IPv6 multicast: 525 * protocol locks before interface locks, after UDP locks. 526 */ 527 { "udpinp", &lock_class_rw }, 528 { "in6_multi_mtx", &lock_class_mtx_sleep }, 529 { "mld_mtx", &lock_class_mtx_sleep }, 530 { "if_addr_mtx", &lock_class_mtx_sleep }, 531 { NULL, NULL }, 532 /* |
533 * UNIX Domain Sockets 534 */ 535 { "unp_global_rwlock", &lock_class_rw }, 536 { "unp_list_lock", &lock_class_mtx_sleep }, 537 { "unp", &lock_class_mtx_sleep }, 538 { "so_snd", &lock_class_mtx_sleep }, 539 { NULL, NULL }, 540 /* --- 2256 unchanged lines hidden --- |