FreeBSD/sys/security/audit/audit_pipe.c
/*
 * audit_pipe_submit(): audit_worker submits audit records via this
 * interface, which arranges for them to be delivered to pipe queues.
 */
audit_worker submits audit records via this
interface, which arranges for them to be delivered to pipe queues.
audit_worker submits audit records via this interface which arranges for them to be delivered to pipe queues .
void
audit_pipe_submit(au_id_t auid, au_event_t event, au_class_t class, int sorf,
    int trail_select, void *record, u_int record_len)
{
	struct audit_pipe *ap;
	if (TAILQ_FIRST(&audit_pipe_list) == NULL)
		return;
	AUDIT_PIPE_LIST_RLOCK();
	TAILQ_FOREACH(ap, &audit_pipe_list, ap_list) {
		AUDIT_PIPE_LOCK(ap);
		if (audit_pipe_preselect_check(ap, auid, event, class, sorf,
		    trail_select))
			audit_pipe_append(ap, record, record_len);
		AUDIT_PIPE_UNLOCK(ap);
	}
	AUDIT_PIPE_LIST_RUNLOCK();
	audit_pipe_records++;
}
void audit_pipe_submit ( au_id_t auid , au_event_t event , au_class_t class , int sorf , int trail_select , void * record , u_int record_len ) { struct audit_pipe * ap ; if ( TAILQ_FIRST ( & audit_pipe_list ) == NULL ) return ; AUDIT_PIPE_LIST_RLOCK ( ) ; TAILQ_FOREACH ( ap , & audit_pipe_list , ap_list ) { AUDIT_PIPE_LOCK ( ap ) ; if ( audit_pipe_preselect_check ( ap , auid , event , class , sorf , trail_select ) ) audit_pipe_append ( ap , record , record_len ) ; AUDIT_PIPE_UNLOCK ( ap ) ; } AUDIT_PIPE_LIST_RUNLOCK ( ) ; audit_pipe_records ++ ; }
audit_pipe_submit(): audit_worker submits audit records via this
 interface, which arranges for them to be delivered to pipe queues.
audit_pipe_submit () : audit_worker submits audit records via this interface which arranges for them to be delivered to pipe queues .
/*
	 * Lockless read to avoid lock overhead if pipes are not in use.
	 */ /* Unlocked increment. */