This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Linux Kernel Markers 0.13 for 2.6.17


* Jeremy Fitzhardinge (jeremy@goop.org) wrote:
> Mathieu Desnoyers wrote:
> >Hi,
> >
> >Ok, so as far as I can see, we can only control the execution flow by 
> >modifying
> >values in the output list of the asm.
> >
> >Do you think the following would work ?
> >
> >
> >#define MARK_JUMP(name, format, args...) \
> >        do { \
> >                char condition; \
> >                asm volatile(   ".section .markers, \"a\";\n\t" \
> >                                        ".long 0f;\n\t" \
> >                                        ".previous;\n\t" \
> >                                        "0:\n\t" \
> >                                        "movb $0,%1;\n\t" \
> >                                : "+m" (__marker_sequencer), \
> >                                "=r" (condition) : ); \
> >                if(unlikely(condition)) { \
> >                        MARK_CALL(name, format, ## args); \
> >                } \
> >        } while(0)
> >  
> 
> Yep, that looks reasonable.  Though you could just directly test a 
> per-marker enable flag, rather than using "condition"...
> 

The goal of the local variable "condition" here is that it will be forced to be
a register (=r in asm output), so there is no memory load involved (immediate
value).

I am not sure I understand your suggestion correctly.. do you mean having
a per-marker flag that would be loaded and tested at every marker site ?


Mathieu

OpenPGP public key:              http://krystal.dyndns.org:8080/key/compudj.gpg
Key fingerprint:     8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]