Deutsch   English   Français   Italiano  
<veb634$dk9$1@reader1.panix.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder9.news.weretis.net!panix!.POSTED.spitfire.i.gajendra.net!not-for-mail
From: cross@spitfire.i.gajendra.net (Dan Cross)
Newsgroups: comp.os.vms
Subject: Re: Apache + mod_php performance
Date: Fri, 11 Oct 2024 12:35:48 -0000 (UTC)
Organization: PANIX Public Access Internet and UNIX, NYC
Message-ID: <veb634$dk9$1@reader1.panix.com>
References: <vcv0bl$39mnj$1@dont-email.me> <20241007110747.000030cc@yahoo.com> <vea4e1$3grd3$1@dont-email.me> <20241011131151.00003a02@yahoo.com>
Injection-Date: Fri, 11 Oct 2024 12:35:48 -0000 (UTC)
Injection-Info: reader1.panix.com; posting-host="spitfire.i.gajendra.net:166.84.136.80";
	logging-data="13961"; mail-complaints-to="abuse@panix.com"
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: cross@spitfire.i.gajendra.net (Dan Cross)
Bytes: 3312
Lines: 59

In article <20241011131151.00003a02@yahoo.com>,
Michael S  <already5chosen@yahoo.com> wrote:
>On Thu, 10 Oct 2024 23:01:13 -0400
>Dave Froble <davef@tsoft-inc.com> wrote:
>> [snip]
>> Actually, simple.
>> 
>> 1) Create the socket in listener process
>> 2) Pass device name to worker process
>> 3) Assign a channel to the device in worker process
>> 4) deassign the channel in listener process (if desired)
>> 
>
>There are few pieces in your simple explanation that I don't understand:
>- How does listener get a device name?

There's a system service (system call) that let's you do that;
it is called `$GETDVI` ("GET Device/Volume Information").  There
is a wrapper in the standard library that makes it a little
easier to work with, `LIB$GETDVI`.

>- What is "channel"? Is it the same as 'socket'?

A channel is a process-unique identifier for some resource you
want to interact with, such as a device or mailbox.  A rough
analogue from the Unix/Linux world is a file descriptor.  On VMS
a socket is a "device", so to interact with it, you must
associate a channel with it.

>- How one "assigns" channel to device? I would guess that device has to
>be open before that?

There's a system service for that.  Section 7.5 of the "VMS
Programming Concepts (volume 2)" manual on the VSI web site goes
into detail about exactly how to do it, but `$ASSIGN` takes a
devine name and allocates and assigns a channel to it.

>- Is device name of the socket system-global? 

Yes.

>If yes, does it mean that any process in the system that happens to
>know a name can open a device and assign it to channel?

No, there are authorization checks and so forth that the system
makes before assignment completes successfully; there's also the
matter that, if a device is already assigned exclusively, by
default it can't be assigned to another process at the same
time.  That's what all of this business about the SHARE
privilege is about; section 7.2.8 of the programming concepts
manual talks about this, but basically, if a process has the
`SHARE` privilege, it can `$ASSIGN` another device accessed
"exclusively" by another process's device.  A subprocess of a
process can also assign a channel to a device that's assigned
to the parent (I dunno if that last bit is always true; it was
in section 18.3 of the "VAX/VMS Internals and Data Structures"
book for VMS 4.4, which is pretty old).

	- Dan C.