Rick - I have run into a small problem in coding this. In the file SystemInterpreter.cpp where it calls haltAllActivities I need to supply the corresponding constant I defined in GlobalNames.h as an argument to the method. The problem is that constant is not avaliable at compile time.
I tried inserting the includes for RexxConstants.hpp and GlobalNames.h but that did not seem to work. What do I need to include to get my constants defined? David Ashley On Thu, 2012-12-06 at 10:19 -0500, Rick McGuire wrote: > Not sure I understand where the confusion is, because GlobalNames.h is > where the relationship is created. For example, > > > GLOBAL_NAME(ACTIVATE, CHAR_ACTIVATE) > > > creates the string object constant OREF_ACTIVATE with a value defined > by CHAR_ACTIVATE. So, for example, to create an OREF_KILL_SIGNAL > item, you might code something like this: > > > GLOBAL_NAME(KILL_SIGNAL, "KILL") > > > Rick > > On Thu, Dec 6, 2012 at 10:07 AM, David Ashley > <w.david.ash...@gmail.com> wrote: > Rick - > > I can not figure out the relationship between the OREF_* names > and the > entries in the GlobalNames.h file. Where is that relationship > established? > > David Ashley > > On Mon, 2012-11-26 at 13:09 -0500, Rick McGuire wrote: > > I was suggesting a change to haltAllActivities. Note that > this will > > also require a couple of tweaks to the Windows-specific code > as well. > > > > > > Rick > > > > > > On Mon, Nov 26, 2012 at 12:02 PM, David Ashley > > <w.david.ash...@gmail.com> wrote: > > I have looked into your reply below and I have a > question. > > > > Would you prefer me to change the existing > haltAllActivities > > methods or > > create new ones with a different argument > footproint? > > > > Either works for me, this is just a style question > really. > > > > David Ashley > > > > On Thu, 2012-11-15 at 11:20 -0500, Rick McGuire > wrote: > > > Not too difficult, actually. The work of raising > a halt > > condition is > > > eventually performed in RexxActivity::halt, which > can > > already take a > > > description string. The path to get there is > > > > > > > Interpreter::haltAllActivities->InterpreterInstance::haltAllActivities->RexActivity::halt. > The first two calls don't take an argument, so you'd need to add one and > pass it along to halt. > > > > > > > > > There is a complication here. The interrupt > handler happens > > > asynchronously and in a state where it is not safe > to create > > new > > > objects. This means any strings passed along as > the > > description will > > > need to be added to the global interpreter string > table > > (e.g., one of > > > the OREF_* names). This means adding appropriate > entries in > > > GlobalNames.h and RexxConstants.hpp. The need to > add this > > in both > > > places is an old vestiage of IBM standards carried > to the > > ultimate > > > extreme. I would not object strenuously if this > was done by > > just > > > coding the literal string value directly in > GlobalNames.h > > without > > > adding a corresponding CHAR_* entry to > RexxConstants.hpp. > > I've sort > > > of already been doing that sort of thing in > Setup.cpp when > > adding new > > > method names. > > > > > > > > > Rick > > > > > > > > > On Thu, Nov 15, 2012 at 10:51 AM, David Ashley > > > <w.david.ash...@gmail.com> wrote: > > > Rick - > > > > > > I need you help with this code. > > > > > > If all these signals are going to raise > the Halt > > condition, we > > > need to > > > supply the user with additional > information about > > what kind of > > > signal > > > this is. How do I add additional > information about > > the kind of > > > Halt > > > (signal) that was raised? > > > > > > David Ashley > > > > > > On Tue, 2012-11-06 at 16:40 +0100, Manfred > Lotz > > wrote: > > > > > > > On Wed, 31 Oct 2012 08:39:53 -0500 > > > > David Ashley <w.david.ash...@gmail.com> > wrote: > > > > > > > > > Rick will need to comment on this. I > am not an > > expert in > > > the > > > > > interpreter code base. > > > > > > > > > > > > > Ok, I had a deeper look at this. Here is > a small > > test script > > > which > > > > could be used to verify my coding: > > > > > > > > /* REXX */ > > > > > > > > signal on halt > > > > > > > > file=.stream~new("sig.lst") > > > > pull > > > > file~close() > > > > > > > > exit(0); > > > > > > > > halt: > > > > msg = "Signal on halt reached." > > > > file~lineout(date() time() msg) /* > Append a > > line to the > > > file */ > > > > file~close() > > > > > > > > > > > > The script writes a message if signal on > halt > > hits. > > > > > > > > > > > > Take the current 4.1.2 rexx interpreter > and run > > it. There > > > are three > > > > test cases. > > > > > > > > 1. rexx sigtest.rexx > > > > > > > > Press Ctrl-C. This triggers SIGINT, and > is already > > > implemented in rexx. > > > > A record will be written to file sig.lst > > > > > > > > 2. rexx sigest.rexx > > > > Get the pid of the process and do kill > <pid>. This > > triggers > > > signal > > > > SIGTERM. > > > > > > > > Not implemented in rexx. No record > written. > > > > > > > > 3. xterm -e rexx sigtest.rexx > > > > a. Now click the x button to close the > window. > > This triggers > > > signal > > > > SIGHUP. Not implemented in rexx, no > record > > written. > > > > b. Check for the pids of the two > processes, i.e. > > xterm and > > > rexx. > > > > Kill the one or the other by using > ordinary kill. > > In neither > > > case a > > > > record will be written. > > > > > > > > > > > > I think that additionally SIGTERM and > SIGHUP > > should be > > > trapped by > > > > signal on halt. Then in these cases rexx > has a > > chance to do > > > cleanup > > > > work before exiting the script. > > > > > > > > > > > > Here is what must be changed so that all > above > > examples > > > result in a > > > > record written, i.e. signal on halt will > honor > > SIGTERM and > > > SIGHUP > > > > (additionally to SIGINT). > > > > > > > > Index: > > interpreter/platform/unix/SystemInterpreter.cpp > > > > > > > > > > =================================================================== > > > > --- > > interpreter/platform/unix/SystemInterpreter.cpp > > > (revision > > > > 8547) > > > > +++ > > interpreter/platform/unix/SystemInterpreter.cpp > > > (working > > > > copy) > > > > @@ -101,7 +101,9 @@ > > > > #endif > > > > > > > > // if the signal is a ctrl-C, we > perform a > > halt > > > operation > > > > - if (sig == SIGINT) > > > > + if (sig == SIGINT || > > > > + sig == SIGTERM || > > > > + sig == SIGHUP) > > > > { > > > > > Interpreter::haltAllActivities(); > > > > return; > > > > @@ -132,9 +134,13 @@ > > > > /* that we now get a coredump instead > of a hang > > > > up */ > > > > > > > > sigaction(SIGINT, NULL, > &old_action); > > > > + sigaction(SIGTERM, NULL, > &old_action); > > > > + sigaction(SIGHUP, NULL, > &old_action); > > > > if (old_action.sa_handler == NULL) > > /* not set > > > by ext. > > > > exit handler*/ > > > > { > > > > - sigaction(SIGINT, &new_action, > NULL); /* > > exitClear > > > on SIGTERM > > > > signal */ > > > > + sigaction(SIGINT, &new_action, > NULL); /* > > exitClear > > > on SIGINT > > > > signal */ > > > > + sigaction(SIGTERM, &new_action, > NULL); > > /* > > > exitClear on > > > > SIGTERM signal */ > > > > + sigaction(SIGHUP, &new_action, > NULL); /* > > exitClear > > > on SIGHUP > > > > signal */ > > > > } > > > > } > > > > > > > > > > > > > > > > What do you thing? Please check the > code. Thanks a > > lot. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > Monitor your physical, virtual and cloud > > infrastructure from a > > > single > > > web console. Get in-depth insight into > apps, > > servers, > > > databases, vmware, > > > SAP, cloud infrastructure, etc. Download > 30-day Free > > Trial. > > > Pricing starts from $795 for 25 servers or > > applications! > > > http://p.sf.net/sfu/zoho_dev2dev_nov > > > > > > > _______________________________________________ > > > Oorexx-devel mailing list > > > Oorexx-devel@lists.sourceforge.net > > > > > > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > Monitor your physical, virtual and cloud > infrastructure from > > a single > > > web console. Get in-depth insight into apps, > servers, > > databases, vmware, > > > SAP, cloud infrastructure, etc. Download 30-day > Free Trial. > > > Pricing starts from $795 for 25 servers or > applications! > > > http://p.sf.net/sfu/zoho_dev2dev_nov > > > _______________________________________________ > Oorexx-devel > > mailing list Oorexx-devel@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > > > > > > > > > ------------------------------------------------------------------------------ > > Monitor your physical, virtual and cloud > infrastructure from a > > single > > web console. Get in-depth insight into apps, > servers, > > databases, vmware, > > SAP, cloud infrastructure, etc. Download 30-day Free > Trial. > > Pricing starts from $795 for 25 servers or > applications! > > http://p.sf.net/sfu/zoho_dev2dev_nov > > _______________________________________________ > > Oorexx-devel mailing list > > Oorexx-devel@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > > > > > > > > > ------------------------------------------------------------------------------ > > Monitor your physical, virtual and cloud infrastructure from > a single > > web console. Get in-depth insight into apps, servers, > databases, vmware, > > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > > Pricing starts from $795 for 25 servers or applications! > > http://p.sf.net/sfu/zoho_dev2dev_nov > > _______________________________________________ Oorexx-devel > mailing list Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > > > > ------------------------------------------------------------------------------ > > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free > Trial > Remotely access PCs and mobile devices and provide instant > support > Improve your efficiency, and focus on delivering more > value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel