From mboxrd@z Thu Jan 1 00:00:00 1970 From: compudj@krystal.dyndns.org (Mathieu Desnoyers) Date: Fri, 12 Dec 2008 09:08:28 -0500 Subject: [ltt-dev] [PATCH] ltt-relay: remove work_struct In-Reply-To: <49422B53.3060506@cn.fujitsu.com> References: <49422B53.3060506@cn.fujitsu.com> Message-ID: <20081212140828.GA3573@Krystal> * Lai Jiangshan (laijs at cn.fujitsu.com) wrote: > > Impact: cleanup > > work_struct is not need. > Yes, that looks good. Thanks ! There are also no bad effects on the -rt tree I can think of. Mathieu > Signed-off-by: Lai Jiangshan > --- > --- linux-2.6.27.7-lttng-0.61.orig/ltt/ltt-relay.c 2008-12-03 16:25:24.000000000 +0800 > +++ linux-2.6.27.7-lttng-0.61/ltt/ltt-relay.c 2008-12-12 13:04:16.000000000 +0800 > @@ -87,7 +87,6 @@ struct ltt_channel_buf_struct { > * Wait queue for blocking user space > * writers > */ > - struct work_struct wake_writers;/* Writers wake-up work struct */ > atomic_t wakeup_readers; /* Boolean : wakeup readers waiting ? */ > } ____cacheline_aligned; > > @@ -241,6 +240,19 @@ static int ltt_remove_buf_file_callback( > } > > /* > + * Wake writers : > + * > + * This must be done after the trace is removed from the RCU list so that there > + * are no stalled writers. > + */ > +static void ltt_relay_wake_writers(struct ltt_channel_buf_struct *ltt_buf) > +{ > + > + if (waitqueue_active(<t_buf->write_wait)) > + wake_up_interruptible(<t_buf->write_wait); > +} > + > +/* > * This function should not be called from NMI interrupt context > */ > static notrace void ltt_buf_unfull(struct rchan_buf *buf, > @@ -252,8 +264,7 @@ static notrace void ltt_buf_unfull(struc > struct ltt_channel_buf_struct *ltt_buf = > percpu_ptr(ltt_channel->buf, buf->cpu); > > - if (waitqueue_active(<t_buf->write_wait)) > - schedule_work(<t_buf->wake_writers); > + ltt_relay_wake_writers(ltt_buf); > } > > /** > @@ -662,14 +673,6 @@ static void ltt_relay_release_channel(st > kfree(ltt_chan); > } > > -static void ltt_wakeup_writers(struct work_struct *work) > -{ > - struct ltt_channel_buf_struct *ltt_buf = > - container_of(work, struct ltt_channel_buf_struct, wake_writers); > - > - wake_up_interruptible(<t_buf->write_wait); > -} > - > /* > * Create ltt buffer. > */ > @@ -696,7 +699,6 @@ static int ltt_relay_create_buffer(struc > local_set(<t_buf->commit_count[j], 0); > init_waitqueue_head(<t_buf->write_wait); > atomic_set(<t_buf->wakeup_readers, 0); > - INIT_WORK(<t_buf->wake_writers, ltt_wakeup_writers); > spin_lock_init(<t_buf->full_lock); > > ltt_buffer_begin_callback(buf, trace->start_tsc, 0); > @@ -856,19 +858,6 @@ static void ltt_relay_async_wakeup_chan( > } > } > > -/* > - * Wake writers : > - * > - * This must be done after the trace is removed from the RCU list so that there > - * are no stalled writers. > - */ > -static void ltt_relay_wake_writers(struct ltt_channel_buf_struct *ltt_buf) > -{ > - > - if (waitqueue_active(<t_buf->write_wait)) > - schedule_work(<t_buf->wake_writers); > -} > - > static void ltt_relay_finish_buffer(struct ltt_channel_struct *ltt_channel, > unsigned int cpu) > { > --- linux-2.6.27.7-lttng-0.61.orig/ltt/ltt-relay-locked.c 2008-12-03 16:25:22.000000000 +0800 > +++ linux-2.6.27.7-lttng-0.61/ltt/ltt-relay-locked.c 2008-12-12 13:09:21.000000000 +0800 > @@ -78,7 +78,6 @@ struct ltt_channel_buf_struct { > * Wait queue for blocking user space > * writers > */ > - struct work_struct wake_writers;/* Writers wake-up work struct */ > int wakeup_readers; /* Boolean : wakeup readers waiting ? */ > } ____cacheline_aligned; > > @@ -233,6 +232,19 @@ static int ltt_remove_buf_file_callback( > } > > /* > + * Wake writers : > + * > + * This must be done after the trace is removed from the RCU list so that there > + * are no stalled writers. > + */ > +static void ltt_relay_wake_writers(struct ltt_channel_buf_struct *ltt_buf) > +{ > + > + if (waitqueue_active(<t_buf->write_wait)) > + wake_up_interruptible(<t_buf->write_wait); > +} > + > +/* > * This function should not be called from NMI interrupt context > */ > static notrace void ltt_buf_unfull(struct rchan_buf *buf, > @@ -244,8 +256,7 @@ static notrace void ltt_buf_unfull(struc > struct ltt_channel_buf_struct *ltt_buf = > percpu_ptr(ltt_channel->buf, buf->cpu); > > - if (waitqueue_active(<t_buf->write_wait)) > - schedule_work(<t_buf->wake_writers); > + ltt_relay_wake_writers(ltt_buf); > } > > /** > @@ -661,14 +672,6 @@ static void ltt_relay_release_channel(st > kfree(ltt_chan); > } > > -static void ltt_wakeup_writers(struct work_struct *work) > -{ > - struct ltt_channel_buf_struct *ltt_buf = > - container_of(work, struct ltt_channel_buf_struct, wake_writers); > - > - wake_up_interruptible(<t_buf->write_wait); > -} > - > /* > * Create ltt buffer. > */ > @@ -689,7 +692,6 @@ static int ltt_relay_create_buffer(struc > kref_get(<t_chan->kref); > ltt_buf->offset = ltt_subbuffer_header_size(); > init_waitqueue_head(<t_buf->write_wait); > - INIT_WORK(<t_buf->wake_writers, ltt_wakeup_writers); > > ltt_buffer_begin_callback(buf, trace->start_tsc, 0); > ltt_buf->commit_count[0] += ltt_subbuffer_header_size(); > @@ -844,19 +846,6 @@ static void ltt_relay_async_wakeup_chan( > } > } > > -/* > - * Wake writers : > - * > - * This must be done after the trace is removed from the RCU list so that there > - * are no stalled writers. > - */ > -static void ltt_relay_wake_writers(struct ltt_channel_buf_struct *ltt_buf) > -{ > - > - if (waitqueue_active(<t_buf->write_wait)) > - schedule_work(<t_buf->wake_writers); > -} > - > static void ltt_relay_finish_buffer(struct ltt_channel_struct *ltt_channel, > unsigned int cpu) > { > > > > _______________________________________________ > ltt-dev mailing list > ltt-dev at lists.casi.polymtl.ca > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68