[Xorp-users] CLI spin fix (hack)

Ben Greear greearb at candelatech.com
Sat Sep 29 11:30:15 PDT 2007


It seems that if you pipe multiple commands into the CLI, it will busy
spin waiting for the previous command to complete.  Since 'commit'
can take multiple seconds when adding an interface, this eats a lot
of CPU.

This hack below to cli/cli_node_net.cc 'fixes' the busy spin.  It actually seems
to me that we should block instead on receiving response from the manager
process, or create the timer with a timeout, but I got lost in a maze of
typedefs and templates trying to figure out how to do it right.  Hopefully
someone will know the right way to do this.

     if (! _pending_input_data.empty()) {
	schedule_process_input_data();
	// Sleep so we don't busy-spin when we have multiple
	// commands queued up and are waiting on response before
	// allowing the next command.
	usleep(50 * 1000); //50ms
     }

Also, this patch below allows multiple -c "cmd" arguments to allow multiple commands
to be piped into xorpsh from the command line.  This patch may actually be
worth applying as is.


[root at nx5000 rtrmgr]# cvs diff -u xorpsh_main.cc
Index: xorpsh_main.cc
===================================================================
RCS file: /cvs/xorp/rtrmgr/xorpsh_main.cc,v
retrieving revision 1.67
diff -u -r1.67 xorpsh_main.cc
--- xorpsh_main.cc      23 May 2007 04:08:30 -0000      1.67
+++ xorpsh_main.cc      29 Sep 2007 18:28:00 -0000
@@ -851,7 +853,8 @@
      while ((c = getopt(argc, argv, "c:t:x:vh")) != EOF) {
         switch(c) {
         case 'c':
-           commands = optarg;
+           commands += optarg;
+           commands += "\n";
             break;
         case 't':
             template_dir = optarg;



-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com



More information about the Xorp-users mailing list