Lines Matching refs:asdev

279 #define AUDIT_SDEV_LOCK(asdev)          mtx_lock(&(asdev)->asdev_mtx)  argument
280 #define AUDIT_SDEV_LOCK_ASSERT(asdev) mtx_assert(&(asdev)->asdev_mtx, \ argument
282 #define AUDIT_SDEV_LOCK_DESTROY(asdev) mtx_destroy(&(asdev)->asdev_mtx) argument
283 #define AUDIT_SDEV_LOCK_INIT(asdev) mtx_init(&(asdev)->asdev_mtx, \ argument
285 #define AUDIT_SDEV_UNLOCK(asdev) mtx_unlock(&(asdev)->asdev_mtx) argument
286 #define AUDIT_SDEV_MTX(asdev) (&(asdev)->asdev_mtx) argument
1544 audit_sdev_append(struct audit_sdev *asdev, void *record, u_int record_len) in audit_sdev_append() argument
1548 AUDIT_SDEV_LOCK_ASSERT(asdev); in audit_sdev_append()
1550 if (asdev->asdev_qlen >= asdev->asdev_qlimit) { in audit_sdev_append()
1551 asdev->asdev_drops++; in audit_sdev_append()
1558 asdev->asdev_drops++; in audit_sdev_append()
1566 asdev->asdev_drops++; in audit_sdev_append()
1574 TAILQ_INSERT_TAIL(&asdev->asdev_queue, ase, ase_queue); in audit_sdev_append()
1575 asdev->asdev_inserts++; in audit_sdev_append()
1576 asdev->asdev_qlen++; in audit_sdev_append()
1577 asdev->asdev_qbyteslen += ase->ase_record_len; in audit_sdev_append()
1578 selwakeup(&asdev->asdev_selinfo); in audit_sdev_append()
1579 if (asdev->asdev_flags & AUDIT_SDEV_ASYNC) { in audit_sdev_append()
1580 pgsigio(asdev->asdev_sigio, SIGIO); in audit_sdev_append()
1583 cv_broadcast(&asdev->asdev_cv); in audit_sdev_append()
1593 struct audit_sdev *asdev; in audit_sdev_submit() local
1604 TAILQ_FOREACH(asdev, &audit_sdev_list, asdev_list) { in audit_sdev_submit()
1605 AUDIT_SDEV_LOCK(asdev); in audit_sdev_submit()
1613 asid == asdev->asdev_asid) || in audit_sdev_submit()
1614 (asdev->asdev_flags & AUDIT_SDEV_ALLSESSIONS) != 0) { in audit_sdev_submit()
1615 audit_sdev_append(asdev, record, record_len); in audit_sdev_submit()
1617 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_submit()
1632 struct audit_sdev *asdev; in audit_sdev_alloc() local
1636 asdev = kalloc_type(struct audit_sdev, Z_ZERO | Z_WAITOK | Z_NOFAIL); in audit_sdev_alloc()
1637 asdev->asdev_qlimit = AUDIT_SDEV_QLIMIT_DEFAULT; in audit_sdev_alloc()
1638 TAILQ_INIT(&asdev->asdev_queue); in audit_sdev_alloc()
1639 AUDIT_SDEV_LOCK_INIT(asdev); in audit_sdev_alloc()
1640 AUDIT_SDEV_SX_LOCK_INIT(asdev); in audit_sdev_alloc()
1641 cv_init(&asdev->asdev_cv, "audit_sdev_cv"); in audit_sdev_alloc()
1646 TAILQ_INSERT_HEAD(&audit_sdev_list, asdev, asdev_list); in audit_sdev_alloc()
1650 return asdev; in audit_sdev_alloc()
1657 audit_sdev_flush(struct audit_sdev *asdev) in audit_sdev_flush() argument
1661 AUDIT_SDEV_LOCK_ASSERT(asdev); in audit_sdev_flush()
1663 while ((ase = TAILQ_FIRST(&asdev->asdev_queue)) != NULL) { in audit_sdev_flush()
1664 TAILQ_REMOVE(&asdev->asdev_queue, ase, ase_queue); in audit_sdev_flush()
1665 asdev->asdev_qbyteslen -= ase->ase_record_len; in audit_sdev_flush()
1667 asdev->asdev_qlen--; in audit_sdev_flush()
1669 asdev->asdev_qoffset = 0; in audit_sdev_flush()
1671 KASSERT(0 == asdev->asdev_qlen, ("audit_sdev_flush: asdev_qlen")); in audit_sdev_flush()
1672 KASSERT(0 == asdev->asdev_qbyteslen, in audit_sdev_flush()
1680 audit_sdev_free(struct audit_sdev *asdev) in audit_sdev_free() argument
1683 AUDIT_SDEV_LOCK_ASSERT(asdev); in audit_sdev_free()
1686 audit_sdev_flush(asdev); in audit_sdev_free()
1687 cv_destroy(&asdev->asdev_cv); in audit_sdev_free()
1688 AUDIT_SDEV_SX_LOCK_DESTROY(asdev); in audit_sdev_free()
1689 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_free()
1690 AUDIT_SDEV_LOCK_DESTROY(asdev); in audit_sdev_free()
1692 TAILQ_REMOVE(&audit_sdev_list, asdev, asdev_list); in audit_sdev_free()
1693 kfree_type(struct audit_sdev, asdev); in audit_sdev_free()
1724 struct audit_sdev *asdev; in audit_sdev_open() local
1736 asdev = audit_sdev_dtab[u]; in audit_sdev_open()
1737 if (NULL == asdev) { in audit_sdev_open()
1738 asdev = audit_sdev_alloc(); in audit_sdev_open()
1739 if (NULL == asdev) { in audit_sdev_open()
1743 audit_sdev_dtab[u] = asdev; in audit_sdev_open()
1745 KASSERT(asdev->asdev_open, ("audit_sdev_open: Already open")); in audit_sdev_open()
1749 asdev->asdev_open = 1; in audit_sdev_open()
1750 asdev->asdev_auid = aia.ai_auid; in audit_sdev_open()
1751 asdev->asdev_asid = aia.ai_asid; in audit_sdev_open()
1752 asdev->asdev_flags = 0; in audit_sdev_open()
1766 struct audit_sdev *asdev; in audit_sdev_close() local
1770 asdev = audit_sdev_dtab[u]; in audit_sdev_close()
1772 KASSERT(asdev != NULL, ("audit_sdev_close: asdev == NULL")); in audit_sdev_close()
1773 KASSERT(asdev->asdev_open, ("audit_sdev_close: !asdev_open")); in audit_sdev_close()
1776 AUDIT_SDEV_LOCK(asdev); in audit_sdev_close()
1777 asdev->asdev_open = 0; in audit_sdev_close()
1778 audit_sdev_free(asdev); /* sdev lock unlocked in audit_sdev_free() */ in audit_sdev_close()
1792 struct audit_sdev *asdev; in audit_sdev_ioctl() local
1795 asdev = audit_sdev_dtab[minor(dev)]; in audit_sdev_ioctl()
1796 KASSERT(asdev != NULL, ("audit_sdev_ioctl: asdev == NULL")); in audit_sdev_ioctl()
1802 AUDIT_SDEV_LOCK(asdev); in audit_sdev_ioctl()
1804 asdev->asdev_flags |= AUDIT_SDEV_NBIO; in audit_sdev_ioctl()
1806 asdev->asdev_flags &= ~AUDIT_SDEV_NBIO; in audit_sdev_ioctl()
1808 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_ioctl()
1812 AUDIT_SDEV_LOCK(asdev); in audit_sdev_ioctl()
1813 *(int *)data = asdev->asdev_qbyteslen - asdev->asdev_qoffset; in audit_sdev_ioctl()
1814 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_ioctl()
1818 *(u_int *)data = asdev->asdev_qlen; in audit_sdev_ioctl()
1822 *(u_int *)data = asdev->asdev_qlimit; in audit_sdev_ioctl()
1828 asdev->asdev_qlimit = *(u_int *)data; in audit_sdev_ioctl()
1843 if (AUDIT_SDEV_SX_XLOCK_SIG(asdev) != 0) { in audit_sdev_ioctl()
1846 AUDIT_SDEV_LOCK(asdev); in audit_sdev_ioctl()
1847 audit_sdev_flush(asdev); in audit_sdev_ioctl()
1848 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_ioctl()
1849 AUDIT_SDEV_SX_XUNLOCK(asdev); in audit_sdev_ioctl()
1858 *(u_int *)data = asdev->asdev_inserts; in audit_sdev_ioctl()
1862 *(u_int *)data = asdev->asdev_reads; in audit_sdev_ioctl()
1866 *(u_int *)data = asdev->asdev_drops; in audit_sdev_ioctl()
1874 *(u_int *)data = (asdev->asdev_flags & AUDIT_SDEV_ALLSESSIONS) ? in audit_sdev_ioctl()
1884 AUDIT_SDEV_LOCK(asdev); in audit_sdev_ioctl()
1886 asdev->asdev_flags |= AUDIT_SDEV_ALLSESSIONS; in audit_sdev_ioctl()
1888 asdev->asdev_flags &= ~AUDIT_SDEV_ALLSESSIONS; in audit_sdev_ioctl()
1890 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_ioctl()
1907 struct audit_sdev *asdev; in audit_sdev_read() local
1911 asdev = audit_sdev_dtab[minor(dev)]; in audit_sdev_read()
1912 KASSERT(NULL != asdev, ("audit_sdev_read: asdev == NULL")); in audit_sdev_read()
1918 if (0 != AUDIT_SDEV_SX_XLOCK_SIG(asdev)) { in audit_sdev_read()
1921 AUDIT_SDEV_LOCK(asdev); in audit_sdev_read()
1922 while (TAILQ_EMPTY(&asdev->asdev_queue)) { in audit_sdev_read()
1923 if (asdev->asdev_flags & AUDIT_SDEV_NBIO) { in audit_sdev_read()
1924 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_read()
1925 AUDIT_SDEV_SX_XUNLOCK(asdev); in audit_sdev_read()
1928 error = cv_wait_sig(&asdev->asdev_cv, AUDIT_SDEV_MTX(asdev)); in audit_sdev_read()
1930 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_read()
1931 AUDIT_SDEV_SX_XUNLOCK(asdev); in audit_sdev_read()
1943 asdev->asdev_reads++; in audit_sdev_read()
1944 while ((ase = TAILQ_FIRST(&asdev->asdev_queue)) != NULL && in audit_sdev_read()
1946 AUDIT_SDEV_LOCK_ASSERT(asdev); in audit_sdev_read()
1948 KASSERT(ase->ase_record_len > asdev->asdev_qoffset, in audit_sdev_read()
1950 toread = MIN((int)(ase->ase_record_len - asdev->asdev_qoffset), in audit_sdev_read()
1952 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_read()
1953 error = uiomove((char *) ase->ase_record + asdev->asdev_qoffset, in audit_sdev_read()
1956 AUDIT_SDEV_SX_XUNLOCK(asdev); in audit_sdev_read()
1964 AUDIT_SDEV_LOCK(asdev); in audit_sdev_read()
1965 KASSERT(TAILQ_FIRST(&asdev->asdev_queue) == ase, in audit_sdev_read()
1967 asdev->asdev_qoffset += toread; in audit_sdev_read()
1968 KASSERT(ase->ase_record_len >= asdev->asdev_qoffset, in audit_sdev_read()
1970 if (asdev->asdev_qoffset == ase->ase_record_len) { in audit_sdev_read()
1971 TAILQ_REMOVE(&asdev->asdev_queue, ase, ase_queue); in audit_sdev_read()
1972 asdev->asdev_qbyteslen -= ase->ase_record_len; in audit_sdev_read()
1974 asdev->asdev_qlen--; in audit_sdev_read()
1975 asdev->asdev_qoffset = 0; in audit_sdev_read()
1978 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_read()
1979 AUDIT_SDEV_SX_XUNLOCK(asdev); in audit_sdev_read()
1989 struct audit_sdev *asdev; in audit_sdev_poll() local
1993 asdev = audit_sdev_dtab[minor(dev)]; in audit_sdev_poll()
1994 KASSERT(NULL != asdev, ("audit_sdev_poll: asdev == NULL")); in audit_sdev_poll()
1997 AUDIT_SDEV_LOCK(asdev); in audit_sdev_poll()
1998 if (NULL != TAILQ_FIRST(&asdev->asdev_queue)) { in audit_sdev_poll()
2001 selrecord(p, &asdev->asdev_selinfo, wql); in audit_sdev_poll()
2003 AUDIT_SDEV_UNLOCK(asdev); in audit_sdev_poll()