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

Itanium port question

Malleka Ramachandran
Frequent Advisor

Itanium port question

I have a situation similar to item 26 of the Application checklist in the "HP OpenVMS Porting Applications from HP OpenVMS Alpha to HP OpenVMS Industry standard 64 for integrity servers".
The code does not link against sys$base_image but defines offsets to the PCB and uses this in a CMKRL system service.
One of the uses of this code is to create a detached process in the context of another user. There are other uses that I have not looked into yet.
These offsets are defined to be version specific and the code only handled until 7.3. We are preparing to move to Itanium, so I tried to bring up the application on an 8.2 Alpha, and I only happened to notice this code when the OS started crashing. I got this offset for the 8.2 but I understand this is very different on Itanium.
I tried to look up the map file on a test drive Itanium box and discovered this.
Though I am posting this as an Itanium port question, I am looking for information to rewrite this code so as not to use the cmkrnl.
I saw the $persona... routines in the system services reference manual but I do not find information about when these routines are used.
Back in the V4.5/4.6 days we used to have an initial section about global sections/event flags etc. in the system service reference manual, before going into the details of calling standard. I am looking for that sort of information about the $personal routines. I would very much appreciate if someone could point me to this information.

John Gillings
Honored Contributor

Re: Itanium port question


The persona services are intended as a mechanism for a privileged user to perform some action on behalf of another user, obeying the privilege, access and quota limits of the client user.

This sounds like what you're trying to achieve with your direct access to the PCB, so persona services are likely to be a cleaner and safer alternative.

You'll probably need to rearchitect your code from the ground up, but it's likely to be significantly simpler, and architecture and version independent. The basic model is to $PERSONA_CREATE to create a persona for your target user, then $PERSONA_ASSUME to "become" that user (that's not entirely correct, but it's close). You then do whatever it is you need to do on behalf of that user, then revert to your "natural" persona.

See the $PERSONA services in the System Services Reference Manual, and also the section on Personas in HP OpenVMS Programming Concepts Manual
A crucible of informative mistakes
Ian Miller.
Honored Contributor

Re: Itanium port question

It's surprising what priviledged code does work on Itanium but in this case it sounds like you should move to using the persona services.

Start with
Purely Personal Opinion
Malleka Ramachandran
Frequent Advisor

Re: Itanium port question

Thanks for the information, exactly what I needed.