/** * @brief EICU Edge detect event. * * @param[in] eicup Pointer to the @p EICUDriver object * @param[in] channel The timer channel that fired the interrupt. * * @notapi */ static void isr_invoke_edge_cb(EICUDriver *eicup, eicuchannel_t channel) { EICUChannel *chp = &eicup->channel[channel]; eicucnt_t compare = eicu_lld_get_compare(chp); uint32_t period = get_time_period(eicup, channel, compare); chp->config->capture_cb(eicup, channel, 0, period); chp->last_idle = compare; }
void print_event(struct event *event) { /* Auxiliary macro to convert NULL to "" */ #define N(str) ((str) ? str : "") /* machine id records are used just to get information about * the guests. */ if (event->type == ET_MACHINE_ID) return; /* If "--all-events" is not given, only the start event is shown. */ if (!all_events_flag && event->type != ET_START) return; /* The type of event is shown only when all records are shown */ if (all_events_flag) printf("%-5.5s ", get_rec_type(event)); /* Print common fields */ printf("%-25.25s", N(event->name)); if (uuid_flag) printf("\t%-36.36s", N(event->uuid)); printf("\t%-11.11s\t%-35.35s", get_username(event), get_time_period(event)); /* Print type specific fields */ if (event->type == ET_RES) { printf("\t%-12.12s", N(event->res_type)); printf("\t%-10.10s", N(event->reason)); if (strcmp("cgroup", event->res_type) != 0) { printf("\t%s", N(event->res)); } else { printf("\t%s\t%s\t%s", N(event->cgroup_class), N(event->cgroup_acl), N(event->cgroup_detail)); } } else if (event->type == ET_MACHINE_ID) { printf("\t%s", N(event->seclevel)); } else if (event->type == ET_AVC) { printf("\t%-12.12s", N(event->avc_operation)); printf("\t%-10.10s", N(event->avc_result)); printf("\t%s\t%s\t%s", N(event->comm), N(event->target), N(event->context)); } printf("\n"); /* Print proof */ if (proof_flag) { int first = 1; int i, len = sizeof(event->proof)/sizeof(event->proof[0]); printf(" Proof:"); for (i = 0; i < len; i++) { if (event->proof[i].time) { printf("%s %ld.%03u:%lu", (first) ? "" : ",", event->proof[i].time, event->proof[i].milli, event->proof[i].serial); first = 0; } } printf("\n\n"); } }