On Mon, 2009-08-24 at 15:14 -0700, Darren Hart wrote: > prio-wake: allow for optional locking prior to broadcast > > Allow the user to decide if the mutex should be held prior to > calling pthread_cond_broadcast(). Default remains the same. > Tested with and without the argument as well as with both 0 and 1 > passed to the argument. Values other than 0 and 1 will result in locking > the mutex. > > Signed-off-by: Darren Hart <[email protected]>
Thanks. Regards-- Subrata > Acked-By: Dinakar Guniguntala <[email protected]> > Acked-by: Vernon Mauery <[email protected]> > Acked-by: Gowrishankar <[email protected]> > > --- > func/prio-wake/prio-wake.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > Index: realtime/func/prio-wake/prio-wake.c > =================================================================== > --- realtime.orig/func/prio-wake/prio-wake.c > +++ realtime/func/prio-wake/prio-wake.c > @@ -56,6 +56,7 @@ > #include <librttest.h> > volatile int running_threads = 0; > static int rt_threads = 0; > +static int locked_broadcast = 1; > static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; > static pthread_mutex_t mutex; > static volatile nsec_t beginrun; > @@ -67,6 +68,8 @@ void usage(void) > rt_help(); > printf("prio-wake specific options:\n"); > printf(" -n# #: number of worker threads\n"); > + printf(" -l# 1:lock the mutex before broadcast, > 0:don't\n"); > + printf(" defaults to 1\n"); > } > > int parse_args(int c, char *v) > @@ -80,6 +83,9 @@ int parse_args(int c, char *v) > case 'n': > rt_threads = atoi(v); > break; > + case 'l': > + locked_broadcast = atoi(v); > + break; > default: > handled = 0; > break; > @@ -106,9 +112,11 @@ void *master_thread(void* arg) > > printf("%08lld us: Master thread about to wake the workers\n", > start/NS_PER_US); > /* start the children threads */ > - rc = pthread_mutex_lock(&mutex); > + if (locked_broadcast) > + rc = pthread_mutex_lock(&mutex); > rc = pthread_cond_broadcast(&cond); > - rc = pthread_mutex_unlock(&mutex); > + if (locked_broadcast) > + rc = pthread_mutex_unlock(&mutex); > > while (running_threads > 0) > sleep(1); > @@ -161,7 +169,7 @@ int main(int argc, char* argv[]) > int i; > setup(); > > - rt_init("hn:", parse_args, argc, argv); > + rt_init("hn:l:", parse_args, argc, argv); > > if (rt_threads == 0) { > numcpus = sysconf(_SC_NPROCESSORS_ONLN); > @@ -172,7 +180,9 @@ int main(int argc, char* argv[]) > printf("\n-----------------------\n"); > printf("Priority Ordered Wakeup\n"); > printf("-----------------------\n"); > - printf("Worker Threads: %d\n\n", rt_threads); > + printf("Worker Threads: %d\n", rt_threads); > + printf("Calling pthread_cond_broadcast() with mutex: %s\n\n", > + locked_broadcast ? "LOCKED" : "UNLOCKED"); > > pri_boost = 3; > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
