comp.lang.ada
 help / color / mirror / Atom feed
From: emery@mitre-bedford.arpa  (David Emery)
Subject: Re: sequential io with multiple types
Date: 27 Oct 92 17:02:02 GMT	[thread overview]
Message-ID: <EMERY.92Oct27120202@Dr_No.mitre.org> (raw)

One of the "extensions" provided by the IEEE P1003.5 POSIX Ada Binding
is the ability to associate an Ada file object with a given file
descriptor, through use of the FORM parameter on Create or Open.  This
is important to achieve the "sharing" effects that John mentioned.  In
POSIX, a file descriptor maps to the operating system's record of file
access (e.g.  the current read/write position in the file.)  POSIX/Ada
does not guarantee that you can get the "desired effect" by opening
two file objects mapped to the same file descriptor.  This is due to
the possibility of internal file buffering by the Ada IO system.  But,
if the Ada IO implementation does not do any additional buffering,
then this should work: (User must supply the appropriate names/types/etc
in <angle brackets>.)

	with POSIX, POSIX_IO, Sequential_IO;
	procedure demo is
	  fd : POSIX_IO.file_descriptor;
          package SIO_one is new Sequential_IO (<type_one>);
	  package SIO_two is new Sequential_IO (<type_two>);
          SIO_one_file : SIO_one.file_type;
          SIO_two_file : SIO_two.file_type;
	begin
          fd := POSIX_IO.Open (name => <filename goes here>,
			       mode => POSIX_IO.write_only);
	  SIO_one.open (SIO_one_file, 
			form => "File_Descriptor => " 
			        & POSIX_IO.file_descriptor'image(fd));
	  SIO_two.open (SIO_two_file, 
			form => "File_Descriptor => " 
			        & POSIX_IO.file_descriptor'image(fd));
          -- note that no NAME parameter is provided for the 
	  -- Sequential_IO instantiation Open operations
	  -- now both Ada sequential file objects are associated with
	  -- the same underlying POSIX file descriptor.
	  SIO_one.put (SIO_one_file, <type one value>);
	  SIO_two.put (SIO_one_file, <type two value>);
	end demo;

Yet another feature of POSIX/Ada...
	
				dave

             reply	other threads:[~1992-10-27 17:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-10-27 17:02 David Emery [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-10-30 15:11 sequential io with multiple types agate!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!zaphod.mps.ohi
1992-10-27 17:40 dog.ee.lbl.gov!overload.lbl.gov!agate!linus!linus.mitre.org!maestro!jclan
1992-10-27 15:21 dog.ee.lbl.gov!overload.lbl.gov!agate!usenet.ins.cwru.edu!magnus.acs.ohio
1992-10-16  2:37 van-bc!cs.ubc.ca!destroyer!sol.ctr.columbia.edu!src.honeywell.com!mail-en
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox