summaryrefslogtreecommitdiff
path: root/usr/src/cmd/auditd/queue.h
diff options
context:
space:
mode:
authorstevel@tonic-gate <none@none>2005-06-14 00:00:00 -0700
committerstevel@tonic-gate <none@none>2005-06-14 00:00:00 -0700
commit7c478bd95313f5f23a4c958a745db2134aa03244 (patch)
treec871e58545497667cbb4b0a4f2daf204743e1fe7 /usr/src/cmd/auditd/queue.h
downloadillumos-gate-7c478bd95313f5f23a4c958a745db2134aa03244.tar.gz
OpenSolaris Launch
Diffstat (limited to 'usr/src/cmd/auditd/queue.h')
-rw-r--r--usr/src/cmd/auditd/queue.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/usr/src/cmd/auditd/queue.h b/usr/src/cmd/auditd/queue.h
new file mode 100644
index 0000000000..d4c171763a
--- /dev/null
+++ b/usr/src/cmd/auditd/queue.h
@@ -0,0 +1,89 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
+ */
+
+#ifndef _QUEUE_H
+#define _QUEUE_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pthread.h>
+#include <stddef.h>
+
+typedef struct aln audit_link_t;
+struct aln {
+ audit_link_t *aln_next;
+};
+
+/* one audit_rec_t per audit record */
+
+typedef struct abq audit_rec_t;
+struct abq {
+ audit_link_t abq_l;
+ int abq_ref_count;
+ size_t abq_buf_len; /* space allocated */
+ size_t abq_data_len; /* space used */
+ char abq_buffer[1]; /* variable length */
+};
+#define AUDIT_REC_HEADER offsetof(audit_rec_t, abq_buffer[0])
+
+/* one audit_q_t entry per audit record per plugin */
+
+typedef struct aqq audit_q_t; /* plugin queued data */
+struct aqq {
+ audit_link_t aqq_l;
+ audit_rec_t *aqq_data;
+ int aqq_sequence;
+};
+
+/* queue head */
+
+typedef struct auq au_queue_t;
+
+struct auq {
+ void *auq_head;
+ void *auq_tail;
+ int auq_count;
+ pthread_mutex_t auq_lock;
+};
+
+int audit_dequeue(au_queue_t *, void **);
+void audit_queue_destroy(au_queue_t *);
+void audit_enqueue(au_queue_t *, void *);
+int audit_queue_size(au_queue_t *);
+void audit_queue_init(au_queue_t *);
+audit_rec_t *audit_release(pthread_mutex_t *, audit_rec_t *);
+void audit_incr_ref(pthread_mutex_t *, audit_rec_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QUEUE_H */