Lines Matching defs:asdev

275 #define	AUDIT_SDEV_LOCK(asdev)		mtx_lock(&(asdev)->asdev_mtx)
276 #define AUDIT_SDEV_LOCK_ASSERT(asdev) mtx_assert(&(asdev)->asdev_mtx, \
278 #define AUDIT_SDEV_LOCK_DESTROY(asdev) mtx_destroy(&(asdev)->asdev_mtx)
279 #define AUDIT_SDEV_LOCK_INIT(asdev) mtx_init(&(asdev)->asdev_mtx, \
281 #define AUDIT_SDEV_UNLOCK(asdev) mtx_unlock(&(asdev)->asdev_mtx)
282 #define AUDIT_SDEV_MTX(asdev) (&(asdev)->asdev_mtx)
1517 audit_sdev_append(struct audit_sdev *asdev, void *record, u_int record_len)
1521 AUDIT_SDEV_LOCK_ASSERT(asdev);
1523 if (asdev->asdev_qlen >= asdev->asdev_qlimit) {
1524 asdev->asdev_drops++;
1531 asdev->asdev_drops++;
1539 asdev->asdev_drops++;
1547 TAILQ_INSERT_TAIL(&asdev->asdev_queue, ase, ase_queue);
1548 asdev->asdev_inserts++;
1549 asdev->asdev_qlen++;
1550 asdev->asdev_qbyteslen += ase->ase_record_len;
1551 selwakeup(&asdev->asdev_selinfo);
1552 if (asdev->asdev_flags & AUDIT_SDEV_ASYNC)
1553 pgsigio(asdev->asdev_sigio, SIGIO);
1555 cv_broadcast(&asdev->asdev_cv);
1565 struct audit_sdev *asdev;
1575 TAILQ_FOREACH(asdev, &audit_sdev_list, asdev_list) {
1576 AUDIT_SDEV_LOCK(asdev);
1583 if ((/* XXXss auid == asdev->asdev_auid && */
1584 asid == asdev->asdev_asid) ||
1585 (asdev->asdev_flags & AUDIT_SDEV_ALLSESSIONS) != 0)
1586 audit_sdev_append(asdev, record, record_len);
1587 AUDIT_SDEV_UNLOCK(asdev);
1602 struct audit_sdev *asdev;
1606 asdev = malloc(sizeof (*asdev), M_AUDIT_SDEV, M_WAITOK | M_ZERO);
1607 if (NULL == asdev)
1610 asdev->asdev_qlimit = AUDIT_SDEV_QLIMIT_DEFAULT;
1611 TAILQ_INIT(&asdev->asdev_queue);
1612 AUDIT_SDEV_LOCK_INIT(asdev);
1613 AUDIT_SDEV_SX_LOCK_INIT(asdev);
1614 cv_init(&asdev->asdev_cv, "audit_sdev_cv");
1619 TAILQ_INSERT_HEAD(&audit_sdev_list, asdev, asdev_list);
1623 return (asdev);
1630 audit_sdev_flush(struct audit_sdev *asdev)
1634 AUDIT_SDEV_LOCK_ASSERT(asdev);
1636 while ((ase = TAILQ_FIRST(&asdev->asdev_queue)) != NULL) {
1637 TAILQ_REMOVE(&asdev->asdev_queue, ase, ase_queue);
1638 asdev->asdev_qbyteslen -= ase->ase_record_len;
1640 asdev->asdev_qlen--;
1642 asdev->asdev_qoffset = 0;
1644 KASSERT(0 == asdev->asdev_qlen, ("audit_sdev_flush: asdev_qlen"));
1645 KASSERT(0 == asdev->asdev_qbyteslen,
1653 audit_sdev_free(struct audit_sdev *asdev)
1657 AUDIT_SDEV_LOCK_ASSERT(asdev);
1660 audit_sdev_flush(asdev);
1661 cv_destroy(&asdev->asdev_cv);
1662 AUDIT_SDEV_SX_LOCK_DESTROY(asdev);
1663 AUDIT_SDEV_LOCK_DESTROY(asdev);
1665 TAILQ_REMOVE(&audit_sdev_list, asdev, asdev_list);
1666 free(asdev, M_AUDIT_SDEV);
1696 struct audit_sdev *asdev;
1707 asdev = audit_sdev_dtab[u];
1708 if (NULL == asdev) {
1709 asdev = audit_sdev_alloc();
1710 if (NULL == asdev) {
1714 audit_sdev_dtab[u] = asdev;
1716 KASSERT(asdev->asdev_open, ("audit_sdev_open: Already open"));
1720 asdev->asdev_open = 1;
1721 asdev->asdev_auid = aia.ai_auid;
1722 asdev->asdev_asid = aia.ai_asid;
1723 asdev->asdev_flags = 0;
1737 struct audit_sdev *asdev;
1741 asdev = audit_sdev_dtab[u];
1743 KASSERT(asdev != NULL, ("audit_sdev_close: asdev == NULL"));
1744 KASSERT(asdev->asdev_open, ("audit_sdev_close: !asdev_open"));
1747 AUDIT_SDEV_LOCK(asdev);
1748 asdev->asdev_open = 0;
1749 audit_sdev_free(asdev); /* sdev lock unlocked in audit_sdev_free() */
1763 struct audit_sdev *asdev;
1766 asdev = audit_sdev_dtab[minor(dev)];
1767 KASSERT(asdev != NULL, ("audit_sdev_ioctl: asdev == NULL"));
1773 AUDIT_SDEV_LOCK(asdev);
1775 asdev->asdev_flags |= AUDIT_SDEV_NBIO;
1777 asdev->asdev_flags &= ~AUDIT_SDEV_NBIO;
1778 AUDIT_SDEV_UNLOCK(asdev);
1782 AUDIT_SDEV_LOCK(asdev);
1783 *(int *)data = asdev->asdev_qbyteslen - asdev->asdev_qoffset;
1784 AUDIT_SDEV_UNLOCK(asdev);
1788 *(u_int *)data = asdev->asdev_qlen;
1792 *(u_int *)data = asdev->asdev_qlimit;
1798 asdev->asdev_qlimit = *(u_int *)data;
1812 if (AUDIT_SDEV_SX_XLOCK_SIG(asdev) != 0)
1814 AUDIT_SDEV_LOCK(asdev);
1815 audit_sdev_flush(asdev);
1816 AUDIT_SDEV_UNLOCK(asdev);
1817 AUDIT_SDEV_SX_XUNLOCK(asdev);
1826 *(u_int *)data = asdev->asdev_inserts;
1830 *(u_int *)data = asdev->asdev_reads;
1834 *(u_int *)data = asdev->asdev_drops;
1841 *(u_int *)data = (asdev->asdev_flags & AUDIT_SDEV_ALLSESSIONS) ?
1850 AUDIT_SDEV_LOCK(asdev);
1852 asdev->asdev_flags |= AUDIT_SDEV_ALLSESSIONS;
1854 asdev->asdev_flags &= ~AUDIT_SDEV_ALLSESSIONS;
1855 AUDIT_SDEV_UNLOCK(asdev);
1872 struct audit_sdev *asdev;
1876 asdev = audit_sdev_dtab[minor(dev)];
1877 KASSERT(NULL != asdev, ("audit_sdev_read: asdev == NULL"));
1883 if (0 != AUDIT_SDEV_SX_XLOCK_SIG(asdev))
1885 AUDIT_SDEV_LOCK(asdev);
1886 while (TAILQ_EMPTY(&asdev->asdev_queue)) {
1887 if (asdev->asdev_flags & AUDIT_SDEV_NBIO) {
1888 AUDIT_SDEV_UNLOCK(asdev);
1889 AUDIT_SDEV_SX_XUNLOCK(asdev);
1892 error = cv_wait_sig(&asdev->asdev_cv, AUDIT_SDEV_MTX(asdev));
1894 AUDIT_SDEV_UNLOCK(asdev);
1895 AUDIT_SDEV_SX_XUNLOCK(asdev);
1907 asdev->asdev_reads++;
1908 while ((ase = TAILQ_FIRST(&asdev->asdev_queue)) != NULL &&
1910 AUDIT_SDEV_LOCK_ASSERT(asdev);
1912 KASSERT(ase->ase_record_len > asdev->asdev_qoffset,
1914 toread = MIN(ase->ase_record_len - asdev->asdev_qoffset,
1916 AUDIT_SDEV_UNLOCK(asdev);
1917 error = uiomove((char *) ase->ase_record + asdev->asdev_qoffset,
1920 AUDIT_SDEV_SX_XUNLOCK(asdev);
1928 AUDIT_SDEV_LOCK(asdev);
1929 KASSERT(TAILQ_FIRST(&asdev->asdev_queue) == ase,
1931 asdev->asdev_qoffset += toread;
1932 KASSERT(ase->ase_record_len >= asdev->asdev_qoffset,
1934 if (asdev->asdev_qoffset == ase->ase_record_len) {
1935 TAILQ_REMOVE(&asdev->asdev_queue, ase, ase_queue);
1936 asdev->asdev_qbyteslen -= ase->ase_record_len;
1938 asdev->asdev_qlen--;
1939 asdev->asdev_qoffset = 0;
1942 AUDIT_SDEV_UNLOCK(asdev);
1943 AUDIT_SDEV_SX_XUNLOCK(asdev);
1953 struct audit_sdev *asdev;
1957 asdev = audit_sdev_dtab[minor(dev)];
1958 KASSERT(NULL != asdev, ("audit_sdev_poll: asdev == NULL"));
1961 AUDIT_SDEV_LOCK(asdev);
1962 if (NULL != TAILQ_FIRST(&asdev->asdev_queue))
1965 selrecord(p, &asdev->asdev_selinfo, wql);
1966 AUDIT_SDEV_UNLOCK(asdev);