Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

RMS Support of 64-bit

SOLVED
Go to solution
Stephen L. De Rudder
Occasional Visitor

RMS Support of 64-bit

I have a default file name stored in a 64-bit address. How do I get the 64-bit address in fab$l_dna? I am using C++ and compiling with cxx/pointer_size=64
11 REPLIES
Dean McGorrill
Valued Contributor

Re: RMS Support of 64-bit

hi Stephen,
we sign extended addresses that needed to be 64 bits, with a macro that I
don't have at my fingertips. what code region, ie user system? curious as to
the application and an example address Dean
Stephen L. De Rudder
Occasional Visitor

Re: RMS Support of 64-bit

It is in user space. The address is 10A000010. The size of fab$l_dna is 32 bits so the address 10A000010 (a 64-bit address) will not fit into fab$l_dna.
John Gillings
Honored Contributor
Solution

Re: RMS Support of 64-bit

Stephen,

At the moment (at least up to V8.3) I think RMS support of 64 bits is limited to the data being read and written. See $RAB64 and $RAB64_STORE.

I believe structures referenced from the FAB are limited to 32 bit space, so you'll need to copy your default file name into a buffer in P0 space (or, depending on volatility, maybe on the stack) so the FAB can see it.
A crucible of informative mistakes
John Gillings
Honored Contributor

Re: RMS Support of 64-bit

 
A crucible of informative mistakes
John Gillings
Honored Contributor

Re: RMS Support of 64-bit

Just occurred to me... an alternate would be to double map the VA containing your default file name in P2 space so there was a P0 space window. That would give your 64 bit address a 32 bit "alias" which you could use in the FAB. But since we're only talking about a default file name, that would be somewhat of a thermonuclear fly swatter.
A crucible of informative mistakes
John Gillings
Honored Contributor

Re: RMS Support of 64-bit

ITRC playing up this morning, hence blank response
A crucible of informative mistakes
Hein van den Heuvel
Honored Contributor

Re: RMS Support of 64-bit

Right, RMS only promoted user data buffers and sizes to 64 bit through the RAB64.
The pointers in FAB, NAM and XABs are 32 bit.

The place where this is possibly most clearly documented is Chapter 11 in the "OpenVMS Programming Concepts Manual"
Specifically:
http://h71000.www7.hp.com/doc/731FINAL/5841/5841pro_035.html#rms_chapter

Hein.
Stephen L. De Rudder
Occasional Visitor

Re: RMS Support of 64-bit

John Gillings - I am giving you some extra points for the laugh I got from your "thermonuclear fly swatter" response.
Dean McGorrill
Valued Contributor

Re: RMS Support of 64-bit

Stephen
ya, I did glaze over that fab with
my response;; curious as to the application,
why the use.

John, itrc has been acting up for me last 2
days. Dean
Stephen L. De Rudder
Occasional Visitor

Re: RMS Support of 64-bit

The application uses lots of allocated memory. The allocated data structures that hold the strings for the file names can (and will) be in 64-bit memory. Several customers are using the 32-bit version and are running out of memory so hence the conversion to 64-bit.

I work for TECSys Development, Inc. btw. With a little research I am sure you can figure out the application.
Hein van den Heuvel
Honored Contributor

Re: RMS Support of 64-bit

You probably know this, but the (name) pointers from the fab do not have to live beyond the $OPEN. In fact you can toss the whole FAB after the open as long as you keep the IFI around for the connect and future close.

So using stack local variable is fine, but would involve a copy.

You may want to zone you memory allocation.

Cheers,
Hein.