[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference vaxaxp::vmsnotes

Title:VAX and Alpha VMS
Notice:This is a new VMSnotes, please read note 2.1
Moderator:VAXAXP::BERNARDO
Created:Wed Jan 22 1997
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:703
Total number of notes:3722

275.0. "System routines for AST-secure absolute queues on VMS/AXP" by BIKINI::ADAE () Tue Mar 04 1997 05:50


	For C-programs on VMS/VAX there are the build-in instructions

	_INSQUE
	_REMQUE


	to implement AST-secure absolute queues for a process.

	Are there system routines on VMS/Alpha which support the same
	functionality ?


	Thanks for any hint ...

	Albert
T.RTitleUserPersonal
Name
DateLines
275.1see DEC C User's Guide, built-in functions for OVMS AlphaGOREN::BORISBoris Gubenko, ISETue Mar 04 1997 08:274
  Probably, __PAL_INSQUEL/Q and __PAL_REMQUEL/Q is what you need.

  Boris
275.2XDELTA::HOFFMANSteve, OpenVMS EngineeringTue Mar 04 1997 09:2745
:	Are there system routines on VMS/Alpha which support the same
:	functionality ?

   This is the OpenVMS conference -- the DEC C conference is located at
   TURRIS::DECC.

   Yes, there are DEC C built-ins that perform these tasks -- here are
   a few of the OpenVMS Alpha built-ins extracted from the DEC C manual:

 6.2.1.53  __PAL_INSQHIL
   This function inserts an entry at the front of a longword
   queue in an indivisible manner. This operation is interlocked
   against similar operations by other processors or devices in
   the system. This function must have write access to header
   and queue entries. The pointers to  head and new_entry  must
   not be equal.

   This function has the following format:

   int __PAL_INSQHIL(void *head, void *new_entry); /  At head, interlocked */

   --

 6.2.1.61  __PAL_INSQUEL
   This function inserts a new entry after an existing entry into
   a longword queue. This function must have write access to
   header and queue entries.

   This function has the following format:

   int __PAL_INSQUEL(void *predecessor, void *new_entry );

   --

   Online documentation for DEC C for the OpenVMS Alpha and the OpenVMS
   VAX platforms, in Postscript and bookreader formats, is available at
   decc::decc$kit:[alpha] and at decc::decc$kit:[vax], respectively.

   --
   And note that there are RTL routines that perform interlocked queue
   manipulations: LIB$INSQHI, etc.  These are documented in the RTL
   manual -- see notes 8.* and 9.* for pointers to the documentation
   in Postscript and Bookreader format, and for how to order the
   documentation from SSB.

275.3WIBBIN::NOYCEPulling weeds, pickin' stonesTue Mar 04 1997 15:024
And just like on VAX, the absolute-queue version (INSQUEL, REMQUEL, ...)
are not protected against simultaneous use by separate threads on a
multiprocessor.  For that you need the relative-queue versions (INSQHIL,
REMQTIL, ...)