getrusage on OpenVMS Alpha
-
Topic author - Contributor
- Posts: 11
- Joined: Wed Sep 01, 2021 6:14 am
- Reputation: 0
- Status: Offline
getrusage on OpenVMS Alpha
Hello,
I'm trying to write some code using the getrusage C function.
According the VSI reference manual (https://vmssoftware.com/docs/VSI_CRTL_REF.pdf), this function should be available for 64bit systems.
Even if I include the resource.h file, I still have this function implicit declared and looking at the header file, there's no mention about that function. Also the symbol RUSAGE_SELF is not declared, and according the reference guide, it should be present.
I'm currently using VSI C V7.4-002 on OpenVMS Alpha V8.4-2L1
Is there any update package for the C library?
thanks a lot,
Fausto Saporito
I'm trying to write some code using the getrusage C function.
According the VSI reference manual (https://vmssoftware.com/docs/VSI_CRTL_REF.pdf), this function should be available for 64bit systems.
Even if I include the resource.h file, I still have this function implicit declared and looking at the header file, there's no mention about that function. Also the symbol RUSAGE_SELF is not declared, and according the reference guide, it should be present.
I'm currently using VSI C V7.4-002 on OpenVMS Alpha V8.4-2L1
Is there any update package for the C library?
thanks a lot,
Fausto Saporito
Re: getrusage on OpenVMS Alpha
I recently had to change my code to support the CRTL-provided getrusage instead of providing my own substitute.
I changed the test
#ifndef RUSAGE_SELF
/* Implement substitute getrusage here, including defining RUSAGE_SELF */
to
#if __CRTL_VER < 80500000
/* implement substitute getrusage */
In other words, the run-time has getrusage() with CRTL version 8.5 or later.
I changed the test
#ifndef RUSAGE_SELF
/* Implement substitute getrusage here, including defining RUSAGE_SELF */
to
#if __CRTL_VER < 80500000
/* implement substitute getrusage */
In other words, the run-time has getrusage() with CRTL version 8.5 or later.
Last edited by jonesd on Wed Sep 01, 2021 10:46 am, edited 1 time in total.
-
Topic author - Contributor
- Posts: 11
- Joined: Wed Sep 01, 2021 6:14 am
- Reputation: 0
- Status: Offline
Re: getrusage on OpenVMS Alpha
Thanks for the hint. I have, indeed, version 8.4
Is there any way to update the CRTL?
In this version also other functions are missing, related to wide-char handling, like wsprintf, wmemcopy.
So it seems the documentation available on the web site is not aligned with the CRTL shipped with the actual OpenVMS version, at least for the alpha platform.
thanks,
Fausto
Last edited by fausap on Wed Sep 01, 2021 11:25 am, edited 1 time in total.
-
- VSI Expert
- Active Contributor
- Posts: 40
- Joined: Mon Jun 10, 2019 9:23 am
- Reputation: 1
- Status: Offline
Re: getrusage on OpenVMS Alpha
The CRTL updates are only available on VSI versions of OpenVMS, V8.4-1H1 or later. HPE no longer releases any updates, including defect repair, for OpenVMS V8.4. There are no incompatible changes between V8.4 and VSI versions. Is there any technical reason not to upgrade?
Dave Sweeney
CEO
VMS Software, Inc.
Boston, MA USA
CEO
VMS Software, Inc.
Boston, MA USA
-
Topic author - Contributor
- Posts: 11
- Joined: Wed Sep 01, 2021 6:14 am
- Reputation: 0
- Status: Offline
Re: getrusage on OpenVMS Alpha
I have no problem updating the CRTL, I don't know where to download or how to request the update package.madsweeney wrote: ↑Thu Sep 02, 2021 7:29 amThe CRTL updates are only available on VSI versions of OpenVMS, V8.4-1H1 or later. HPE no longer releases any updates, including defect repair, for OpenVMS V8.4. There are no incompatible changes between V8.4 and VSI versions. Is there any technical reason not to upgrade?
I am using OpenVMS V8.4-2L1, so I suppose the update is available for that OpenVMS version, correct?
To clarify, I installed the C compiler using the kit found in the AVMS842L2LP2 iso image downloaded from the vsiftp site, using the ACOMMUNITY account.
The installed C compiler is marked as VSI C, but the version is 7.4-002 not 7.4-1 (as described in the pdf manual).
Last edited by fausap on Sun Sep 05, 2021 5:27 pm, edited 1 time in total.
-
- VSI Expert
- Active Contributor
- Posts: 40
- Joined: Mon Jun 10, 2019 9:23 am
- Reputation: 1
- Status: Offline
Re: getrusage on OpenVMS Alpha
Hello,
Please you provide more details on the software you are writing.
Thank You,
Please you provide more details on the software you are writing.
Thank You,
Dave Sweeney
CEO
VMS Software, Inc.
Boston, MA USA
CEO
VMS Software, Inc.
Boston, MA USA
-
Topic author - Contributor
- Posts: 11
- Joined: Wed Sep 01, 2021 6:14 am
- Reputation: 0
- Status: Offline
Re: getrusage on OpenVMS Alpha
Sure. The code is a sequence generator. The getrusage function is used to measure the time used by the printing function.madsweeney wrote: ↑Mon Sep 06, 2021 12:31 pmHello,
Please you provide more details on the software you are writing.
Thank You,
I have also problem with wchar.h and wmemchr (not used in this code), because even it's described in the CRTL manual, in my CRTL is missing.
Code: Select all
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <locale.h>
#include <wchar.h>
#if defined(__VMS)
#define timersub(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
if ((result)->tv_usec < 0) { \
--(result)->tv_sec; \
(result)->tv_usec += 1000000; \
} \
} while (0)
#endif
static struct timeval epoch;
static void init_times(void)
{
gettimeofday(&epoch, 0);
}
static long times_real(void)
{
struct timeval tv;
struct rusage ru;
gettimeofday(&tv, 0);
getrusage(RUSAGE_SELF, &ru);
timersub(&tv, &epoch, &tv);
long real= tv.tv_sec * 1000 + tv.tv_usec / 1000;
long user= ru.ru_utime.tv_sec * 1000 + ru.ru_utime.tv_usec / 1000;
long syst= ru.ru_stime.tv_sec * 1000 + ru.ru_stime.tv_usec / 1000;
return real;
}
int main()
{
init_times();
setlocale(LC_CTYPE, "");
for (int i=1;i<10000;i++) {
printf("%d -> ",i);
for (int j=2;j<i;j++) {
if ((i % j)==0) printf("%ld ",(long) i*j/(i+j));
if ((i % j)==0) wprintf(L"%lc ",(wchar_t) (i+j));
}
printf("\n");
}
printf("\nreal: %ld\n",times_real());
return 0;
}
-
- VSI Expert
- Active Contributor
- Posts: 40
- Joined: Mon Jun 10, 2019 9:23 am
- Reputation: 1
- Status: Offline
Re: getrusage on OpenVMS Alpha
Let me clarify my request for information on the software. Access to VSI OpenVMS CRTL updates and ECO patches require you to supply a valid VSI software support service number, VSN or VON. You get a VSN number by having a support contract or being an approved software partner developing commercial or OpenSource software.
Contact isv@vmssoftware.com to register as a partner or sales@vmssoftware,com for information on support options or academic options.
Contact isv@vmssoftware.com to register as a partner or sales@vmssoftware,com for information on support options or academic options.
Dave Sweeney
CEO
VMS Software, Inc.
Boston, MA USA
CEO
VMS Software, Inc.
Boston, MA USA
-
Topic author - Contributor
- Posts: 11
- Joined: Wed Sep 01, 2021 6:14 am
- Reputation: 0
- Status: Offline
Re: getrusage on OpenVMS Alpha
ok, I'll try that, thanks.madsweeney wrote: ↑Tue Sep 07, 2021 7:16 amLet me clarify my request for information on the software. Access to VSI OpenVMS CRTL updates and ECO patches require you to supply a valid VSI software support service number, VSN or VON. You get a VSN number by having a support contract or being an approved software partner developing commercial or OpenSource software.
Contact isv@vmssoftware.com to register as a partner or sales@vmssoftware,com for information on support options or academic options.