[LITMUS^RT] RFC: record interrupt interference with Feather-Trace

Glenn Elliott gelliott at cs.unc.edu
Tue Jan 24 14:10:25 CET 2012


Will this only pick up NMIs, or all interrupts?

-Glenn


On Jan 24, 2012, at 8:07 AM, Björn Brandenburg wrote:

> The below patch adds support for the new IRQ flags in the ftdump tool (part of the ft_tools repository).
> 
> - Björn
> 
> commit 6138184c2ad3e4027b0ab1958cde3da2a660147d
> Author: Bjoern B. Brandenburg <bbb at cs.unc.edu>
> Date:   Tue Jan 24 13:54:01 2012 +0100
> 
>    Add support for IRQ flag and counter in binary trace format.
> 
>    This introduces the new bit allocation and adds support to ftdump
>    for showing the values.
> 
>    Not yet included is any support for filtering based on IRQ
>    interference.
> 
> diff --git a/include/timestamp.h b/include/timestamp.h
> index f3dd6b8..75ab79a 100644
> --- a/include/timestamp.h
> +++ b/include/timestamp.h
> @@ -14,7 +14,9 @@ struct timestamp {
> 	uint32_t		seq_no;
> 	uint8_t			cpu;
> 	uint8_t			event;
> -	uint8_t			task_type;
> +	uint8_t			task_type:2;
> +	uint8_t			irq_flag:1;
> +	uint8_t			irq_count:5;
> };
> 
> typedef uint32_t cmd_t;
> diff --git a/src/ftdump.c b/src/ftdump.c
> index 39747c9..1462c4d 100644
> --- a/src/ftdump.c
> +++ b/src/ftdump.c
> @@ -38,19 +38,22 @@ static void dump(struct timestamp* ts, size_t count)
> 			printf("==== non-consecutive sequence number ====\n");
> 		last_seq = x->seq_no;
> 		if (name)
> -			printf("%-20s seq:%u  timestamp:%llu  cpu:%d  type:%-8s \n",
> +			printf("%-20s seq:%u  timestamp:%llu  cpu:%d  type:%-8s irq:%u irqc:%02u \n",
> 			       name,  x->seq_no,
> 			       (unsigned long long)  x->timestamp,
> 			       x->cpu,
> -			       task_type2str(x->task_type));
> +			       task_type2str(x->task_type),
> +			       x->irq_flag,
> +			       x->irq_count);
> 		else
> -			printf("%16s:%3u seq:%u  timestamp:%llu  cpu:%u  type:%-8s\n",
> +			printf("%16s:%3u seq:%u  timestamp:%llu  cpu:%u  type:%-8s irq:%u irqc:%02u\n",
> 			       "event",
> 			       (unsigned int) x->event, x->seq_no,
> 			       (unsigned long long)  x->timestamp,
> 			       x->cpu,
> -			       task_type2str(x->task_type));
> -
> +			       task_type2str(x->task_type),
> +			       x->irq_flag,
> +			       x->irq_count);
> 	}
> }
> 
> @@ -75,14 +78,12 @@ int main(int argc, char** argv)
> 	       "\t offset(timestamp) = %3lu\n"
> 	       "\t offset(seq_no)    = %3lu\n"
> 	       "\t offset(cpu)       = %3lu\n"
> -	       "\t offset(event)     = %3lu\n"
> -	       "\t offset(task_type) = %3lu\n",
> +	       "\t offset(event)     = %3lu\n",
> 	       (unsigned long) sizeof(struct timestamp),
> 	       offset(struct timestamp, timestamp),
> 	       offset(struct timestamp, seq_no),
> 	       offset(struct timestamp, cpu),
> -	       offset(struct timestamp, event),
> -	       offset(struct timestamp, task_type));
> +	       offset(struct timestamp, event));
> 
> 	if (argc != 2)
> 		die("Usage: ftdump  <logfile>");
> 
> 
> _______________________________________________
> litmus-dev mailing list
> litmus-dev at lists.litmus-rt.org
> https://lists.litmus-rt.org/listinfo/litmus-dev





More information about the litmus-dev mailing list