[Info-vax] Gartner report on VMS future.
ChaosLess
james at enduring.com
Mon Sep 21 12:47:51 EDT 2009
On Sep 20, 5:52 pm, Michael Kraemer <M.Krae... at gsi.de> wrote:
> ChaosLess schrieb:
>
>
>
> > no secrets other than tight programming, lots of hard work writing
> > code that we keep improving. and reworking parts of the libraries as
> > technology improves on unix's for it... how we did async programming
> > in 1990 didn't work well for async qio and ast delivery was a
> > challenge, just like stack unwinding... reworking core components,
> > adding scalable threading, and LOTS of testsuite programs :-)
>
> well, ISTR people here have claimed that AST's would be impossible
> on any system other than VMS.
ASTs and the VMS api calls that depend upon them are, of course, not
supported on *nix
so software that depends on these needs an additional library to
provide that functionality
my original point was that creating this library of additional
functionality on *nix is where S7 started out 20+ years ago.
this one of the many things our libraries do - to faithfully support
asts, timers, qio, iosb, etc... as expected by VMS software.
for example, below is one of our testsuites that we use on HP-UX,
Linux, Solaris, and AIX to exercise our underlying async layer...
we have similar tests for qio to terminals and mailbox, testing event
flags, iosb completion status, etc... so that we can ensure software
written for VMS will operate identically on *nix platforms. whenever
we have clients that find a gap in our libraries (it is only software,
after all) then we get the opportunity to improve our products. over
the years, we have closed that gap sufficiently that now we are more
comfortable selling our libraries as product-only offerings where that
is the customer preference.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <descrip.h>
#include <starlet.h>
static int time_vms[2];
static void ast ()
{
int sts;
fprintf(stderr,"Timer Fired\n\r");
if(!(sts = sys$setimr (0, &time_vms, &ast, 0, 0)) & 1) lib$stop
(sts);
}
int main (void)
{
int sts;
$DESCRIPTOR(time_d, "0 ::.05");
if(!(sts = sys$bintim(&time_d, &time_vms)) & 1) lib$stop(sts);
if(!(sts = sys$setimr (0, &time_vms, &ast, 0, 0)) & 1) lib$stop
(sts);
while(1) {
(void) sys$setast (0);
fprintf(stderr,"ASTS off\n\r");
sts = sys$setimr (0, &time_vms, &ast, 0, 0);
sleep (5);
(void) sys$setast (1);
fprintf(stderr,"ASTS on\n\r");
sleep (5);
}
}
More information about the Info-vax
mailing list