diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/ChangeLog | 10 | ||||
-rw-r--r-- | runtime/print.c | 35 | ||||
-rw-r--r-- | runtime/print_new.c | 3 | ||||
-rw-r--r-- | runtime/print_old.c | 3 | ||||
-rw-r--r-- | runtime/transport/ChangeLog | 6 | ||||
-rw-r--r-- | runtime/transport/transport.c | 6 |
6 files changed, 59 insertions, 4 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog index 75272aa0..e6079bea 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,13 @@ +2007-11-09 Masami Hiramatsu <mhiramat@redhat.com> + + PR3858 + * print.c: Add -DRELAY_HOST=<hostname> and -DRELAY_GUEST=<hostname> + options support. + (_stp_print_flush): Disable irqs if -DRELAY_* option is specified. + * print_old.c: Export stp_print_flush to other modules if the + -DRELAY_HOST option is specified. + * print_new.c: Ditto. + 2007-10-25 Mike Mason <mmlnx@us.ibm.com> * stat-common.c: Allow histogram bucket elision to be turned off diff --git a/runtime/print.c b/runtime/print.c index c100bbfe..326d67d5 100644 --- a/runtime/print.c +++ b/runtime/print.c @@ -72,6 +72,21 @@ void _stp_print_cleanup (void) free_percpu(Stp_lbuf); } +#define __DEF_EXPORT_FN(fn, postfix) fn ## _ ## postfix +#define DEF_EXPORT_FN(fn, postfix) __DEF_EXPORT_FN(fn, postfix) + +#if defined(RELAY_GUEST) +#if defined(RELAY_HOST) + #error "Cannot specify both RELAY_HOST and RELAY_GUEST" +#endif +#define EXPORT_FN(fn) DEF_EXPORT_FN(fn, RELAY_GUEST) +#elif defined(RELAY_HOST) +#define EXPORT_FN(fn) DEF_EXPORT_FN(fn, RELAY_HOST) +#else /* defined(RELAY_GUEST) || defined(RELAY_HOST) */ +#define EXPORT_FN(fn) fn +#endif + +#if !defined(RELAY_GUEST) /* The relayfs API changed between 2.6.15 and 2.6.16. */ /* Use the appropriate print flush function. */ @@ -80,6 +95,26 @@ void _stp_print_cleanup (void) #else #include "print_new.c" #endif +#if defined(RELAY_HOST) +EXPORT_SYMBOL_GPL(EXPORT_FN(stp_print_flush)); +#endif + +#endif /*!RELAY_GUEST*/ + +#if defined(RELAY_GUEST) || defined(RELAY_HOST) +/* Prohibit irqs to avoid racing on a relayfs */ +extern void EXPORT_FN(stp_print_flush) (_stp_pbuf *); +static inline void _stp_print_flush(void) +{ + unsigned long flags; + local_irq_save(flags); + EXPORT_FN(stp_print_flush) (per_cpu_ptr(Stp_pbuf, smp_processor_id())); + local_irq_restore(flags); +} +#else +#define _stp_print_flush() \ + EXPORT_FN(stp_print_flush)(per_cpu_ptr(Stp_pbuf, smp_processor_id())) +#endif #ifndef STP_MAXBINARYARGS #define STP_MAXBINARYARGS 127 diff --git a/runtime/print_new.c b/runtime/print_new.c index b34aad8a..95a83a8d 100644 --- a/runtime/print_new.c +++ b/runtime/print_new.c @@ -17,9 +17,8 @@ */ spinlock_t _stp_print_lock = SPIN_LOCK_UNLOCKED; -void _stp_print_flush (void) +void EXPORT_FN(stp_print_flush) (_stp_pbuf *pb) { - _stp_pbuf *pb = per_cpu_ptr(Stp_pbuf, smp_processor_id()); uint32_t len = pb->len; /* check to see if there is anything in the buffer */ diff --git a/runtime/print_old.c b/runtime/print_old.c index 401d1af1..5ee050b5 100644 --- a/runtime/print_old.c +++ b/runtime/print_old.c @@ -16,9 +16,8 @@ * @note Preemption must be disabled to use this. */ -void _stp_print_flush (void) +void EXPORT_FN(stp_print_flush) (_stp_pbuf *pb) { - _stp_pbuf *pb = per_cpu_ptr(Stp_pbuf, smp_processor_id()); uint32_t len = pb->len; /* check to see if there is anything in the buffer */ diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog index ee34ef19..263a6bf8 100644 --- a/runtime/transport/ChangeLog +++ b/runtime/transport/ChangeLog @@ -1,3 +1,9 @@ +2007-11-09 Masami Hiramatsu <mhiramat@redhat.com> + + PR3858 + * transport.c (_stp_transport_init): Reduce relay buffer size to + 64KB*2 if -DRELAY_GUEST is specified. + 2007-11-09 Martin Hunt <hunt@redhat.com> PR 5281 * transport.c (_stp_detach, _stp_attach): Call utt_set_overwrite() diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c index 9aa26b79..2904cf2f 100644 --- a/runtime/transport/transport.c +++ b/runtime/transport/transport.c @@ -249,6 +249,12 @@ int _stp_transport_init(void) _stp_uid = current->uid; _stp_gid = current->gid; +#ifdef RELAY_GUEST + /* Guest scripts use relay only for reporting warnings and errors */ + _stp_subbuf_size = 65536; + _stp_nsubbufs = 2; +#endif + if (_stp_bufsize) { unsigned size = _stp_bufsize * 1024 * 1024; _stp_subbuf_size = ((size >> 2) + 1) * 65536; |